python pytest之fixture
一、fixture优势:
1、 命名灵活,不局限于setup和teardown
2、 所有fixture都可写在一个conftest.py文件中,供所有测试用例使用
3、 conftest.py配置里可以实现数据共享前置,不需要import 代码自动识别
4、 scop=”module” 可实现多个.py跨文件共享前置,每个.py文件调用一次
5、 scop=”session” 可实现多个.py跨文件使用一个session完成多个用例
二、fixture创建与使用:
@pytest.fixture()
def logs(): #函数名随意
pass
在需要使用fixture的用例中,当做参数传入即可:
def test_login(logs):
Print(“测试购物”)
三、实用yied在一个fixture实现setup和teardown功能,如果用例出现异常是不影响yield执行行的。
四、addfinalizerp 为终结函数,跟yied一样,可以return参数,传给后面用例
五、 带返回值和参数化的fixture; 在fixture中可以使用其它的fixture
import pytest
@pytest.fixture(params=['13800000001','13300000001','13800000006'])
def phone(request):
"""获取手机号"""
return request.param
@pytest.fixture(params=['1234','3214','213'])
def login(phone,request):
return (phone,request.param)
def test_mobile(login):
print(f'手机号和密码分别是:{login}') #两个参数会组会出9个结果