说明: conftest.py配置里可以实现数据共享,不需要import就能自动找到配置内容。
注意以下3点:
1、conftest.py配置脚本名称是固定的,不能修改名称
2、conftest.py与运行的用例要在同一个package下,并且有__init__.py文件
3、不需要import导入conftest.py,pytest用例会自动查找
语法: fixture(scope=“function”, params=None, autouse=False, ids=None, name=None):
:arg scope:有四个级别“function”、“class”、“module”、“session”
:arg params:一个可选的参数列表,它将导致多个参数调用fixture功能和所有测试使用它
:arg autouse:如果为True,则为所有测试激活fixture func可以看到它,如果为False,则显示需要参考来激活fixture
:arg ids:每个字符串id的列表,每个字符串对应于params这样他们就是测试id的一部分,如果没有提供id它们将从params自动生成
:arg name:fixture的名称
脚本在同一个文件中test_demo.py:
import pytest
@pytest.fixture()
def login():
print('输入账号、密码登录')
def test_s1(login):
print('用例1:登录之后其他操作111')
def test_s2():
print('用例2:需要登录,操作222')
def test_s3(login):
print('用例3:登录之后其他操作333')
执行结果:
脚本不在同一个文件里:
1、conftest.py文件:
import pytest
@pytest.fixture()
def login():
print('请输入账号、密码登录')
2、test_fix1.py文件:
import pytest
def test_s1(login):
print('用例1:登录之后其他动作111')
def test_s2():
print('用例2:不需要登录,操作222')
def test_s3(login):
print('用例3:登录之后其他动作333')
3、test_fix2.py文件:
import pytest
def test_s4(login):
print('用例4:登录之后其他动作111')
def test_s5():
print('用例5:不需要登录,操作222')
单独执行test_fix1.py文件:
单独执行test_fix2.py文件: