数据驱动ddt+excel数据读取
Posted 女林
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据驱动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 = self.table.row_values(0)
# 获取总行数
self.rowNum = self.table.nrows
# 获取总列数
self.colNum = self.table.ncols
def dict_data(self):
if self.rowNum <= 1:
print("总行数小于1")
else:
r = []
j=1
for i in range(self.rowNum-1):
s = {}
# 从第二行取对应values值
values = self.table.row_values(j)
for x in range(self.colNum):
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
from common.read_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):
#每次都从登录页开始
self.driver.get(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中的数据挨个传入
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()
以上是关于数据驱动ddt+excel数据读取的主要内容,如果未能解决你的问题,请参考以下文章
Selenium3+Python3_15:数据驱动ddt+excel