pytest:给定异常的xfail,否则传递

时间:2016-10-06 16:27:52

标签: python pytest

我的测试使用xfail并需要有效连接。

如果连接断开,我希望它from requests import ConnectionError @pytest.mark.xfail(raises=ConnectionError) class TestStuff(): def test_stuff(): do stuff ,否则正常传递。

以下是我的尝试:

xfail

如果连接断开,这确实会xpass,但在一般情况下会from requests import ConnectionError class TestStuff(): def test_stuff(): try: do stuff except ConnectionError: pass

有没有办法达到我想要的目的?

我可以使用try / except:

=IF(ISERROR(A2),B1,A2)

但我得不到xfail。测试总是通过,但我没有被告知它无法正常执行。

我猜xfail用于系统错误,可能会在某一天修复(破坏lib,...),而不是像连接错误那样的瞬态错误。

2 个答案:

答案 0 :(得分:2)

pytest支持测试或设置函数中的命令式xfail。

使用您拥有的try / except代码,并在pytest.xfail('some message')正文中加入except

请参阅: http://doc.pytest.org/en/latest/skipping.html#imperative-xfail-from-within-a-test-or-setup-function

答案 1 :(得分:2)

xfail被捕获时调用ConnectionError是一种解决方案。

检查夹具中的连接(以同样的方式 - 尝试 - 除了pytest.xfail)并在所有需要连接的测试中使用该夹具更好。

这样,这样的灯具会导致所有相关测试都无法运行它们。