0

我一直认为 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 =====================

如果我正确理解了用户手册中的内容,那么两个测试都应该是“XPASS”。

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

4

1 回答 1

1

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

于 2013-05-29T13:35:46.130 回答