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个结果