有没有办法跳过pytest夹具?

时间:2017-10-20 15:59:28

标签: pytest

问题是我给定的fixture函数有一个外部依赖,并导致"错误" (如无法访问的网络/资源不足等)。

我想跳过夹具,跳过任何依赖于这个夹具的测试。

做这样的事情不会起作用:

import pytest

@pytest.mark.skip(reason="Something.")
@pytest.fixture(scope="module")
def parametrized_username():
    raise Exception("foobar")
    return 'overridden-username'

这将导致

_______________________________ ERROR at setup of test_username _______________________________

    @pytest.mark.skip(reason="Something.")
    @pytest.fixture(scope="module")
    def parametrized_username():
>       raise Exception("foobar")
E       Exception: foobar

a2.py:6: Exception

什么是立即跳过pytest灯具?

1 个答案:

答案 0 :(得分:2)

是的,你可以轻松地做到这一点:

$ pytest -v -s -ra r.py 
r.py::test_me SKIPPED
=========== short test summary info ===========
SKIP [1] .../r.py:6: Because I want so

=========== 1 skipped in 0.01 seconds ===========
pytest.skip()

在内部,Skipped函数会引发异常OutcomeException,该异常继承自pytest.fail()。这些异常是专门用于模拟测试结果,但不会使测试失败(类似于forwardMessage)。