网站建设工作小组推进表,湖南信息网官方网站,门头沟做网站公司,建设工程信息网官网新网站我们在做接口测试时#xff0c;有时会遇到涉及用例特别多的时候#xff0c;每个用例都去手动调一遍#xff0c;很费时费力#xff0c;也是不现实的#xff0c;这篇文章我们就解决下这种费时费力的情况.
一、业务需求
某所大学通信系共2个班级#xff0c;刚考完某一门课…
我们在做接口测试时有时会遇到涉及用例特别多的时候每个用例都去手动调一遍很费时费力也是不现实的这篇文章我们就解决下这种费时费力的情况.
一、业务需求
某所大学通信系共2个班级刚考完某一门课程想通过“性别”、“班级”和“成绩”这三个查询条件对通信系这门课程的成绩分布男女比例或班级比例进行人员查询
根据“性别”“男女”进行查询
根据“班级”“一班二班”查询
根据“成绩”“及格不及格”查询
按照传统设计——全部测试
分析上述测试需求有3个被测元素被测元素我们称为因素每个因素有两个取值我们称之为水平值所以全部测试用例个数是2*2*28参见下表 序号 性别 班级 成绩 1 女 1班 及格 2 女 1班 不及格 3 女 2班 及格 4 女 2班 不及格 5 男 1班 及格 6 男 1班 不及格 7 男 2班 及格 8 男 2班 不及格
如果有10个因素每个因素有2个水平取值那么我们需要组合2*2*2*2*2*2*2*2*2*21024个用例这样去实现是不可能的大家是如何处理这种情况的
二、利用pytest装饰器pytest.mark.parametrize实现快速生成所有正交测试用例可以解决这种问题我们看到脚本生成的用例和上面手动列的用例完全一样这样我们就可以根据需求中因数和因数水平值快速生成所有正交测试用例
pytest.mark.parametrize(因数1字段,[因数1的水平值1,因数1的水平值2])
pytest.mark.parametrize(因数2字段,[因数2的水平值1,因数2的水平值2])
……
这样有几个因素就写几个装饰器然后每个装饰器里分别放入对应因数的水平值组成不同的测试用例data一次调用可出所有测试用例结果可实现快速接口测试是不是很方便呢。
import pytestclass Test(object):pytest.mark.parametrize(sex,[男,女])pytest.mark.parametrize(classes , [一班,二班])pytest.mark.parametrize(score, [及格, 不及格])def test(self,sex,classes,score):data{sex:,classes:,score:}data[sex]sexdata[classes] classesdata[score] scoreprint(data)
if __name____main__:pytest.main([-s,test02.py])C:\Program Files\Python35\python.exe C:/Users/wangli/PycharmProjects/Test/test/test02.pytest session starts
platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
rootdir: C:\Users\wangli\PycharmProjects\Test\test
plugins: allure-pytest-2.8.5, html-1.22.0, metadata-1.8.0
collected 8 itemstest02.py {classes: 一班, score: 及格, sex: 男}
.{classes: 一班, score: 及格, sex: 女}
.{classes: 二班, score: 及格, sex: 男}
.{classes: 二班, score: 及格, sex: 女}
.{classes: 一班, score: 不及格, sex: 男}
.{classes: 一班, score: 不及格, sex: 女}
.{classes: 二班, score: 不及格, sex: 男}
.{classes: 二班, score: 不及格, sex: 女}
. 8 passed in 0.26s Process finished with exit code 0