通过参数的方式来传递数据,从而
– unittest 测试框架,本身不支持参数化,但是可以通过安装
什么是数据驱动?
执行测试用例的过程,本质上是执行的不同数据,不同输入输出的过程。所以,在计算机中,我们可以使用预先设定好的数据文件,来执行测试用例,实现覆盖测试点。
参数化引入案例
参数化实现
项目代码中路径
import os
# __file__ 特殊的变量,表示当前代码文件名
# path1 = os.path.abspath(__file__) 当前文件的绝对路径
# path2 = os.path.dirname(path1) 当前文件的目录路径
# BASE_DIR = os.path.dirname(os.path.abspath(__file__))
BASE_DIR = os.path.dirname(__file__)
if __name__ == '__main__':
print(BASE_DIR)
案例一
将测试数据 定义为 json 文件, 读取 json 文件,完成参数化,数据分离
json 文件:data/add_data_1.json
[
{
"a": 1,
"b": 2,
"expect": 3
},
{
"a": 11,
"b": 22,
"expect": 33
},
{
"a": 12,
"b": 23,
"expect": 35
},
{
"a": 14,
"b": 25,
"expect": 39
}
]
读取json文件:common/read_data.py
def build_add_data_2():
with open(BASE_DIR + '/data/add_data_1.json') as f:
data_list = json.load(f) # [{}, {}, {}] ----> [(), ()]
new_list = []
for data in data_list: # data 字典
# 字典中的值,是否都需要
new_list.append(tuple(data.values()))
return new_list
代码文件
import unittest
from common.read_data import build_add_data_2 #数据来源
from tools import add #被测试代码
from parameterized import parameterized #参数化库
class TestAdd(unittest.TestCase):
@parameterized.expand(build_add_data_2())
def test_add(self, a, b, expect):
print(f'a:{a}, b:{b}, expect:{expect}')
self.assertEqual(expect, add(a, b))
if __name__ == '__main__':
unittest.main()
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END