DDT数据驱动简介
DDT数据驱动在自动化测试之DDT数据驱动中已经做了详细介绍,但如果将测试数据写在代码中则达不到数据分离的目的,而如果将测试数据写在yaml文件或json文件中,对测试人员的要求会更高,书写起来也不方便,所以最好的方式是用Excel来维护测试数据
Excel数据的读取
python读取Excel文件需要借助第三方工具,常用的有:xlrd、openpyxl,本文采用xlrd3工具来实现
实现步骤
首先安装xlrd3工具
pip install xlrd3Excel中的测试数据 
数据的读取 --- 定义一个Excel的读取工具
import xlrd3def get_case_data(path):#定义列表存放测试数据(即所有用例的数据)data = []#定义一个临时容器,用于接收每行的测试数据(每行即一个用例)case = []# 创建excel对象,可以使用open_workbook打开指定excel文件work_book = xlrd3.open_workbook(path)# 创建表单对象sheet = work_book.sheet_by_index(0)# 获取总行数row_count = sheet.nrows#使用循环语句,读取每行的数据,并将数据存放到data中for row in range(1,row_count): #从第2行开始读取# 将每行的数据存放到case列表中case.append(sheet.cell_value(row,0))case.append(sheet.cell_value(row,1))#将存放一行数据的case存放到data列表中data.append(case)# case是一个临时容器,每次用完后需要清空case = []return dataExcel读取代码测试 
使用定义好的Excel读取工具,将数据通过ddt传入到测试用例中,即可实现Excel+ddt数据驱动,从而实现数据和代码分离,代码如下:
import unittestfrom selenium import webdriverfrom selenium.webdriver.common.by import Byfrom ddt import ddt,datafrom util_excel import get_case_data@ddt #表示该测试类支持ddt工具class DataDriver(unittest.TestCase):def setUp(self) -> None:self.driver = webdriver.Chrome()self.driver.maximize_window()self.driver.get("https://www.baidu.com/")#[['case-001', '软件测试'], ['case-002', 'python'], ['case-003', '关羽'], ['case-004', '泰坦尼克号']]# 使用get_case_data方法读取的数据是一个嵌套的列表,因此需要使用*解包@data(*get_case_data("data/baidu_page.xls"))def test01(self,args):#args是一个有两个元素的列表name = args[0]value = args[1]print("\n开始执行测试用例%s -----> start"%name)self.driver.find_element(By.ID,"kw").send_keys(value)self.driver.find_element(By.ID,"su").click()print("测试用例%s执行结束 ----> end\n" % name)
文章转载自自动化测试知识分享,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




