我一直认为 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 中的错误还是我出错了?