一、使用fixtrue固件结合contest.py文件实现前后置
装饰器:
@pytest.fixtrue(scope="作用范围", autouse=“自动执行”, ids="参数别名", params=[["参数1", “参数2”]], name=“固件别名”)
scope:function 函数
scope:class 类
scope:module 模块
scope:session 会话
在一个文件中设置的固件fixtrue只能在当前文件起作用,如果希望对所有的py文件起作用,那需要结合conftest.py文件。
定义:
@pytest.fixture(scope="function", params=[1, 2, 3, 5], name="aaa")
def my_fixture(request):
print('这是前置的方法,可以实现部分以及全部用例的前置')
yield request.param
print('这是后置的方法')
使用:
def test_01_interface_method(self, aaa):
time.sleep(1)
print("测试 interface_method" + aaa)
分层级执行前后置,其中先执行外层的conftest.py,后面再执行子层文件夹的conftest.py。
二、接口自动化测试框架封装之通过文件保持中间变量实现接口关联
# 读取yaml
def read_yaml():
with open('config/config.yaml', mode='r', encoding='utf-8') as f:
value = yaml.load(stream=f, Loader=yaml.FullLoader)
return value
# 写入
def write_yaml(key):
# a+ 是拼接的方式
with open('config/config.yaml', mode='a+', encoding='utf-8') as f:
value = yaml.dump(data, stream=f, allow_unicode=True)
return value[key]
# 清空 (通过fixtrue夹具,放在请求之前去执行)
def clear_yaml():
with open('config/config.yaml', mode='w', encoding='utf-8') as f:
f.truncate()
原因:
1、类变量不能夸文件使用
2、统一管理中间变量
什么时候清空?
请求之前去清空
三、学习流程:
先工具 -> 自动化 -> 性能 -> 测开