目录
一、使用背景
二、parametrize
三、yaml
四、将yaml数据转换成parametrize可读的列表形式
总结:
一、使用背景
当我们在设计用例的时候,经常会出现需要不同参数的情况,例如一个登录的用例,我们需要测试它登录名正常、为空、长度过长、过短、特殊字符等情况,因此就需要有不同情况下的参数,而当这些参数过多时,我们如果要一步一步的输入,便会显得有点繁琐,因此就需要有参数化的概念。这里用到pytest里的parametrize+yaml来实现参数化。
Python自动化测试学习交流群:全套自动化测试面试简历学习资料获取点击链接加入群聊【python自动化测试交流】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DhOSZDNS-qzT5QKbFQMsfJ7DsrFfKpOF&authKey=eBt%2BF%2FBK81lVLcsLKaFqnvDAVA8IdNsGC7J0YV73w8V%2FJpdbby66r7vJ1rsPIifg&noverify=0&group_code=198408628
二、parametrize
首先我们需要知道parametrize的用法。下面是官方文档中的说明
这里我总结了一下:
@pytest.mark.parametrize("参数名",列表数据)
参数名:用来接收每一项数据,并作为测试用例的参数。
列表数据:一组测试数据。
接下来直接用代码说明:
1 2 3 4 |
|
这里是比较a+b是否等于c,显然只有2个满足该条件,故断言只有2个通过
运行结果:
三、yaml
能用来做参数化的形式其实有很多种,可以用xlrd读取excel表做参数化也可以。这里我选择用yaml来做参数化。因为yaml是一个可读性高,用来表达数据序列化的格式,它不是一门语言,跟json有点类似,是一种储存数据的载体,且支持多种语言,也比较容易理解。需要注意的是yaml比较注重格式,下面是yaml格式的一些基本语法:
示例:
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 |
|
四、将yaml数据转换成parametrize可读的列表形式
从上面我们知道了parametrize需要传一个数据参数 ,所以现在的关键点是怎么把yaml格式的数据转换成parametrize可接受的数据格式。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
封装一个方法,该方法用来将yaml中的数据转换成列表。上面的两个yaml示例转换成列表后如下:
知道了yaml格式和如何转换yaml数据之后,接下来要实现用例的参数化就好办多了。
test_parametrize.py
1 2 3 4 5 6 7 8 9 |
|
test_yaml
1 2 3 4 5 6 7 8 9 |
|
运行测试用例后,可以看到有两组用例测试通过
如果后续想继续加数据,可直接将数据写再yaml文件里即可。即实现了参数化功能,做到数据与代码分离。
总结:
感谢每一个认真阅读我文章的人!!!
我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。
Python自动化测试学习交流群:全套自动化测试面试简历学习资料获取点击链接加入群聊【python自动化测试交流】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DhOSZDNS-qzT5QKbFQMsfJ7DsrFfKpOF&authKey=eBt%2BF%2FBK81lVLcsLKaFqnvDAVA8IdNsGC7J0YV73w8V%2FJpdbby66r7vJ1rsPIifg&noverify=0&group_code=198408628