在py.test中使用命令式xfail进行测试,即使传递也始终报告为xfail

时间:2013-05-29 12:12:45

标签: pytest

我一直认为py.test中xfail / skip的命令式和声明性用法应该以相同的方式工作。与此同时,我注意到如果我编写一个包含命令性跳过的测试,测试结果将始终为“xfail”,即使测试通过也是如此。

以下是一些代码:

import pytest

def test_should_fail():
    pytest.xfail("reason")

@pytest.mark.xfail(reason="reason")
def test_should_fail_2():
    assert 1

运行这些测试将始终导致:

============================= test session starts ==============================
platform win32 -- Python 2.7.3 -- pytest-2.3.5 -- C:\Python27\python.exe
collecting ... collected 2 items

test_xfail.py:3: test_should_fail xfail
test_xfail.py:6: test_should_fail_2 XPASS

===================== 1 xfailed, 1 xpassed in 0.02 seconds =====================

如果我正确理解user manual中的内容,则两个测试都应该是“XPASS”。

这是py.test中的错误还是我出错?

1 个答案:

答案 0 :(得分:1)

使用pytest.xfail()辅助函数时,您实际上会在测试函数中引发异常。只有当你使用标记时,py.test才能完全执行测试并给你一个XPASS。