如何解决如何将参数传递给pytest固定装置?
我想将参数传递给pytest固定装置,因此当固定装置90%相同时,我不需要10个不同的固定装置。
我想要实现的最简单的例子:
@pytest.mark.parametrize('foo',[a=1])
def test_args(tmp_path,foo):
assert foo == 3
@pytest.fixture
def foo(tmp_path,a,b=2):
return a + b
有没有一种方法可以将a和b标记为参数,而不是其他标记?还是最好的方法就是通过定义函数而不是夹具来实现?
我将tmp_path
固定装置放在其中,以确保参数化是明确的,并允许使用多个固定装置。
值得指出的是
@pytest.fixture
def foo(request):
return request.param[0] + request.param[1]
@pytest.mark.parametrize('foo',[(1,2)],indirect=True)
def test_args(tmp_path,foo):
assert foo == 3
可以工作,({as defined in the docs),但不是我想要的。我想知道是否更类似于我给定代码的东西行得通。我希望能够按名称传递参数,为参数指定默认值,等等。
我已经看到了这个similar stackoverflow question,这似乎表明pytest(?)支持此功能,但是它的答案似乎更加令人困惑,它们似乎都不适合我提出的情况。
解决方法
使我能够实现自己想要的目标
@pytest.fixture
def foo(tmp_path):
def _foo(a: int,b: int = 2):
return a + b
return _foo
def test_args(tmp_path,foo):
bar = foo(a=1)
assert bar == 3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。