Pytest套房拥有出色的灯具特色.
为了制作可重复使用的夹具,我们用特殊的装饰器标记一个函数:
@pytest.fixture
def fix():
return {...}
以后可以通过与灯具原始名称匹配的参数名称在我们的测试中使用:
def test_me(fix):
fix['field'] = 'expected'
assert(fix['field'] == 'expected')
虽然我们有时会忘记在参数中指定fixture,并且由于工厂的名称与生成的对象的名称相匹配,因此测试将默默地将更改应用于工厂对象本身:
def test_me(): # notice no arg
fix['this is'] = 'a hell to debug'
当然,结果是不可取的.例如,能够为工厂函数添加一些后缀会很好,但pytest.fixture装饰器显然没有覆盖灯具名称的方法.
任何其他建议也足够了.
什么是保护自己免受此类问题的推荐技术?
解决方法:
您可以在定义夹具时使用autouse = True,以便在每次夹具开始时调用夹具.此功能已在pytest 2.0中添加.
例如:
import pytest
@pytest.fixture(scope='function',autouse=True)
def fixture_a():
return 5
def test_a():
assert fixture_a == 5
如您所见,我没有必要将fixture声明为test_a中的参数来访问它.
文档:https://docs.pytest.org/en/latest/reference.html#pytest-fixture
代码示例:https://docs.pytest.org/en/latest/fixture.html#autouse-fixtures-xunit-setup-on-steroids
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。