我有一个测试,它取决于名为fixture
的夹具。这大致是它的代码:
def test_optional_cool_feature(fixture):
if not fixture.supports_cool_feature():
return
assert cool_feature() == expected_result
此处fixture
是一个参数化夹具,存在于N个变体中并声明为
@py.test.fixture(scope="session", params=["type1", ...])
def fixture(request):
if request.param = "type1":
return Type1()
elif ...
但是当它针对不支持PASSED
的灯具运行时,py.test
输出中的测试被跳过(而不是cool_feature
)也是很好的。不幸的是,使用@py.test.mark.skipif('not fixture.supports_cool_feature()')
无法实现这一点,因为fixture
在执行skipif
时仍然是一个函数,而不是替代的测试参数。
答案 0 :(得分:0)
回答我自己的问题,因为我错过了skip
上documentation的部分内容,其中说明了如何做到我想要的内容:
从测试或设置功能中跳过命令
如果由于某种原因你不能宣布跳过条件,你也可以 从测试或设置代码中强制生成跳过结果。 例如:
def test_function(): if not valid_config(): pytest.skip("unsupported configuration")