Pytest--fixture详解
作者:互联网
fixture
-
fixture介绍
1.命名方式灵活,不局限于setup和teardown这几个命名
2.conftest.py配置里可以实现数据共享 -
fixture源码详解
@pytest.fixture(scope="function", params=None, autouse=False, ids=None, name=None)
参数说明:
scope:标记方法的作用域(functipn,class,module,session上篇文章有介绍)
params:一个可选的参数列表,它将导致多个参数调用fixture功能和所有测试使用它
autouse:默认:False,需要用例手动调用该fixture;如果是True,所有作用域内的测试用例都会自动调用该fixture
ids:每个字符串id的列表,每个字符串对应于params这样他们就是测试ID的一部分。如果没有提供ID它们将从params自动生成
name:fixture的名称。这默认为装饰函数的名称。如果fixture在定义它的统一模块中使用,夹具的功能名称将被请求夹具的功能arg遮蔽,解决这个问题的一种方法时将装饰函数命令"fixture_"然后使用"@pytest.fixture(name=' ')" -
fixture具体使用
1.将fixture作为测试函数的输入参数
#conftest.py
import pytest
@pytest.fixture(scope='function', autouse=False)
def open_server():
a = 1
print('---开启服务---')
return a
@pytest.fixture(scope='function', autouse=False)
def close_server():
print('---关闭服务---')
#test_case.py
def test_run(self, open_server):
print('---开始执行用例---')
assert open_server == 1
#结果
test_001_case.py::TestCase001::test_run demo
---开启服务---
PASSED [100%]---开始执行用例---
2.assert在fixture里,断言失败就是error
@pytest.fixture()
def user():
print("获取用户名")
name = "xoxo"
assert name == "oxox" # fixture失败就是error
return name
标签:False,name,--,fixture,pytest,autouse,---,Pytest 来源: https://www.cnblogs.com/Bruin/p/15204768.html