注:这篇博客专门介绍自动化数据驱动的实现方式
一、unittest实现数据驱动(ddt)
1.1、什么是DDT?
data driver test数据驱动测试,可以完美的和unittest结合实现数据驱动
1.2、DDT中的装饰器
- @ddt:装饰类,作用是用于申明当前类使用ddt数据驱动
- @data: 装饰函数,作用是给函数传值
- @unpack:装饰函数,作用是数据解包
- @file_data:装饰函数,作用是直接读yaml、json文件
1.3、代码示例
示例一: 注意:传几个值,就会运行几次
import unittest
from ddt import ddt, data
from base.base_util import BasUtil
@ddt
class TestLogin(BasUtil):
@data("值1","值2","值3")
def test_01_login(self, args):
print(args)
if __name__ == '__main__':
unittest.main()
返回
test_login.py .值1
.值2
.值3
[100%]
============================== 3 passed in 21.43s ==============================
示例二:如果我们要传入测试数据,可以写成列表的形式传入
import unittest
from ddt import ddt, data
from base.base_util import BasUtil
@ddt
class TestLogin(BasUtil):
@data([1, "key1", "value1"], [2, "key2", "value2"])
def test_01_login(self, args):
print(args)
if __name__ == '__main__':
unittest.main()
返回:
test_login.py .[1, 'key1', 'value1']
.[2, 'key2', 'value2']
[100%]
============================== 2 passed in 19.24s ==============================
示例三:通过excel读取数据来实现数据驱动 1.将数据写入excel 2.封装读取excel的方法
from pathlib import Path
import openpyxl
class ExcelUtil(object):
def __init__(self):
self.base_dir = Path(__file__).parent.parent
def read_excel(self):
wb = openpyxl.load_workbook('%s/data/testdata.xlsx' % self.base_dir)
sheet = wb['login']
all_list = []
for rows in range(2, sheet.max_row+1):
temp_list = []
for cols in range(1, sheet.max_column+1):
temp_list.append(sheet.cell(rows, cols).value)
all_list.append(temp_list)
print(all_list)
if __name__ == '__main__':
ExcelUtil().read_excel()
返回(处理后的数据)
[[1, 'a', 'aaaaaa'], [2, 'aa', 'a'], [3, 'aa', 'aaaaaa']]
|