在测试执行期间将测试标记为跳过

时间:2015-03-17 19:34:10

标签: testing pytest

我有一个测试,它取决于名为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时仍然是一个函数,而不是替代的测试参数。

1 个答案:

答案 0 :(得分:0)

回答我自己的问题,因为我错过了skipdocumentation的部分内容,其中说明了如何做到我想要的内容:

  

从测试或设置功能中跳过命令

     

如果由于某种原因你不能宣布跳过条件,你也可以   从测试或设置代码中强制生成跳过结果。   例如:

def test_function():
    if not valid_config():
        pytest.skip("unsupported configuration")