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中的参数来访问它.
标签:python,pytest
来源: https://codeday.me/bug/20190706/1396255.html