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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。