数据驱动ddt+excel数据读取
我们可以将测试数据⽤excel存储,再⽤ddt去传⼊,不过我们需要安装对应的库,因为python是⽆法操作excel的1.安装第三⽅库xlrd
2.创建⼀个excel表格,将需要测试的数据保存
3.封装读取excel
# coding:utf-8
import xlrd
class ExcelUtil():
def __init__(self, excelPath, sheetName="Sheet1"):
self.data = xlrd.open_workbook(excelPath)
self.table = self.data.sheet_by_name(sheetName)
# 获取第⼀⾏作为key值
self.keys = w_values(0)
# 获取总⾏数
# 获取总列数
def dict_data(self):
wNum <= 1:
print("总⾏数⼩于1")
else:
r = []
j=1
for i in wNum-1):
s = {}
# 从第⼆⾏取对应values值
values = w_values(j)
for x in lNum):
s[self.keys[x]] = values[x]
r.append(s)
j+=1
return r
if __name__ == "__main__":
filepath = "data_excel"
#sheetName = "Sheet1"
data = ExcelUtil(filepath)
print data.dict_data()
for i in data.dict_data():
print i
4.ddt和excel结合
from selenium import webdriver
from common.base import BasePage
from page.page_login import LoginPage,login_url
ad_excel_ddt import ExcelUtil
import unittest
import ddt
#⽤excle表格传⼊
filepath="data_excel.xlsx"
data=ExcelUtil(filepath)
datadict=data.dict_data()
print datadict
@ddt.ddt
class Login_test(unittest.TestCase):
'''登录页⾯的测试⽤例'''
@classmethod
def setUpClass(cls):
#只打开⼀次浏览器
cls.driver=webdriver.Firefox()
#实例化page_login中的LoginPage类
cls.login_driver=LoginPage(cls.driver)
cls.driver.open(login_url)
def setUp(self):
#每次都从登录页开始
(login_url)
def tearDown(self):
#每次清空登录的cookie,数据还原
self.driver.delete_all_cookies()
@classmethod
def tearDownClass(cls):
#关闭浏览器
cls.driver.quit()
def login_case(self,user,psw,exc):
'''登录的流程'''
self.login_driver.input_username(user)
self.login_driver.input_password(psw)
self.login_driver.click_submit()
result=self.login_driver.is_login_sucess()#获取结果
#如果⽤excel的话由于返回的是0,1所以需要⽤bool
except_result=bool(exc)
self.assertEqual(result,except_result)#断⾔
  @ddt.data(*datadict)#把excel中的数据挨个传⼊
selenium获取cookie
def test_login_01(self,data):
'''登陆失败⽤例:输⼊正确的账户,错误的密码'''
    self.login_case(data["username"],data["psw"],data["expect"])    def test_login_02(self,data):
'''登陆失败⽤例:输⼊正确的账户,正确的密码'''
    self.login_case(data["username"],data["psw"],data["expect"]) if __name__=="__main__":
unittest.main()

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。