通过使用数据驱动测试的方法,可以在需要验证多组数据的测试场景中,使用外部数据源实现对输入值和期望值的参数化,从而避免在测试中仅使用硬编码的数据。将测试数据和测试脚本分离开,使得测试脚本在不同数据集合下高度复用。
使用方法
在测试类上使用@ddt装饰符, 在测试方法上使用@data装饰符。 @data装饰符把参数当作测试数据,参数可以是单个值、列表、元组、字典。对于列表,需要用@unpack装饰符把元组和列表解析成多个参数。
1 2 3 | @ddt .data(( "phones" , 2 ),( "music" , 5 )) @unpack def test_search( self ,search_value,expected_count): |
使用外部数据的数据驱动测试
1.通过CSV获取数据
import csv,unittest from ddt import ddt,data,unpack from selenium import webdriver def get_data(file_name): rows =[] data_file = open(file_name,"rb") reader = csv.reader(data_file) #skip the headers next(reader,None) for row in reader: rows.append(row) return rows @ddt class SearchCsvDDT(unittest.TestCase): ....... #get the data from specified csv file by calling the get_data function @data(*get_data("testdata.csv")) @unpack def test_search(self,search_value,expected_count): ...........
2.通过excel获取数据
import xlrd,unittest from ddt import ddt,data,unpack from selenium import webdriver def get_data(file_name): rows =[] book = xlrd.open_workbook(file_name) sheet = book.sheet_by_index(0) for row_idx in range(1,sheet.nrows): rows.append(sheet.row_values(row_idx,0,sheet.ncols)) return rows @ddt class SearchExcelDDT(unittest.TestCase): ....... #get the data from specified excel file by calling the get_data function @data(*get_data("testdata.csv")) @unpack def test_search(self,search_value,expected_count): ...........
@data将调用get_data()方法去读取外部Excel文件,并将数据逐行返回给@data
如果要从数据库中获取数据,也可以修改get_data()方法,通过DB相关的库来连接数据库、SQL查询来获取测试数据
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界