一、@pytest.mark.parametrize()基本用法
@pytest.mark.parametrize(args_name,args_value)
args_name:参数名
args_value:参数值(列表[],元祖(),字典列表[{},{}],字典元祖({},{})),有多个值用例就会执行多少次
import time import pytest class TestApi: @pytest.mark.parametrize('a', ['1', '2']) # 列表 def test_huahua(self, a): time.sleep(5) print(a) # 跟unittest的ddt里面的@unpack解包的一样 @pytest.mark.parametrize('a', [['1', '2'], ['11', '22']]) def test_huahua1(self, a): time.sleep(5) print(a) @pytest.mark.parametrize('a', ('1', '2')) # 元组 def test_huahua2(self, a): time.sleep(5) print(a) @pytest.mark.parametrize('a', [{'huahua', '4'}, {'caocao', '6'}]) # 字典列表 def test_huahua3(self, a): time.sleep(5) print(a) @pytest.mark.parametrize('a', ({'huahua', '88'}, {'caocao', '66'})) # 字典元组 def test_huahua4(self, a): time.sleep(5) print(a) @pytest.mark.parametrize('a, b', [['我', '4'], ['你', '6']]) # 列表 def test_chen(self, a, b): print(a, b) @pytest.mark.parametrize('a, b', [{'hua', '4'}, {'cao', '6'}, {'yun', '8'}]) # 字典列表 def test_chen1(self, a, b): print(a, b) if __name__ == '__main__': pytest.main(['-vs'])
运行结果:
二、YAML文件详解---实现接口自动化
1.用于全局的配置文件 ini/yaml
2.用于写测试用例(接口测试用例)
Yaml简介
yaml是一种数据格式,支持注释,换行,多行字符串,裸字符串(整形,字符串)。
语法规则:
1.区分大小写
2.使用缩进表示层级,不能使用tab键缩进,只能用空格(和python一样)
3.缩进没有数量的,只要前面是对其的就行。
4.注释是#
数据组成
1.Map对象,键值对 键:(空格)值
多行的写法:
msxy: name: 花花 age: 18
一行的写法:
msxy: {name: 花花,age: 18}
2.数组(list),用一组横线开头,如:
多行的写法:
- msxy: - name: 花花 - age: 18 - msjy: - name: xingxing - age: 20
一行的写法:
- msxy: [{name: 花花},{age: 18}]
yaml验证:验证格式对不对
验证网址:https://www.bejson.com/validators/yaml_editor/
三、yaml接口自动化实战
项目中要先安装Pyyaml
这个数据驱动太粗糙。不够
1.断言的封装。
2.allure报告的定制。
3.关键字驱动和数据驱动结合实现接口自动化测试。
4.python的反射
正常:先初始化对象,在调方法。
反射:通过对象得到类对象,然后通过类对象调用方法
5.jenkins的持续集成和allure报告集成,并且根据自动化的报告的错误率发送电子邮件。