一,@pytest.mark.parametrize()基本用法
@pytest.mark.parametrize(args_name,args_value)
args_name:参数名
args_value:参数值,支持{},[],(),{}
- 第一种方式:
import pytest
class TestApi:
@pytest.mark.parametrize('args',['变量1','变量2','变量3'])
def test_01(self,args):
print(args)
if __name__ == '__main__':
pytest.main(['test_api.py','-s'])
预期结果:
- 第二种方式:跟unittest的ddt 里面的unpack 解包的一样
import pytest
class TestApi:
@pytest.mark.parametrize('a1,a2',[['变量值1_1','变量值1_2'],['变量值2_1','变量值2_2'],['变量值3_1','变量值3_2']])
def test_01(self,a1,a2):
print(a1,a2)
if __name__ == '__main__':
pytest.main(['test_api.py','-s'])
预期结果
test_api.py::TestApi::test_01[\u53d8\u91cf\u503c1_1-\u53d8\u91cf\u503c1_2] 变量值1_1 变量值1_2
PASSED
test_api.py::TestApi::test_01[\u53d8\u91cf\u503c2_1-\u53d8\u91cf\u503c2_2] 变量值2_1 变量值2_2
PASSED
test_api.py::TestApi::test_01[\u53d8\u91cf\u503c3_1-\u53d8\u91cf\u503c3_2] 变量值3_1 变量值3_2
PASSED
二,YAML文件详解–实现接口自动化
1,用于全局的配置文件:ini/yaml
2,用于写测试用例(接口测试用例)
Yaml 简介:
yaml 是一种数剧格式,支持注释,换行,多行字符串,裸字符串(整形,字符串)。
yaml 语法规则:
1,区分大小写
2,使用缩进表示层级,不能使用tab键缩进,只能用空格
3,缩进没有数量的,只要前面是对齐的就行
4,注释是#
数据组成
1,map对象,键值对,键:(空格)值
cxzx:
name: sophia
age: 18
2,数组(list),用一组横线开头,如:
-
cxzx:
-name: sophia
-age: 18
yaml_util.py: 读取yaml 中的数据
class YamlUtil:
def __init__(self,yaml_file):
'''
通过init方法把yaml文件传入到这个类
:param yaml_file:
'''
self.yaml_file = yaml_file
#
def raad_yaml(self):
'''
读取yaml,对yaml反序列化,就是把我们的yaml 格式转换成dict格式
:return:
'''
with open(self.yaml_file,encoding='utf-8') as f:
value = yaml.load(f, Loader=yaml.FullLoader)
print(value)
if __name__ == '__main__':
YamlUtil('test_api.yaml').raad_yaml()
结果:
{'cxzx': {'name': 'sophia', 'age': 18}}