py.test を使用して、一部のテスト ケースが失敗すると予想されるテストを生成することがよくあります。それらを xfail としてマークするにはどうすればよいですか? テスト関数に置くと、@py.test.mark.xfail
そのすべてのインスタンスが xfail であることを意味します。テスト内で行うpy.test.xfail()
と、xfail としてマークするだけでなく、実際にテストに失敗します。このマーカーを追加するために metafunc でできることはありますか?
例えば
# code - function with a bug :)
def evenHigherThanSquare(n):
return n**2
# test file
def pytest_generate_tests(metafunc):
data = [
(2, 4),
(3, 10), # should be xfail
(4, 16),
(5, 26), # should be xfail
]
for input, expected in data:
if metafunc.function is test_evenHigherThanSquare:
metafunc.addcall(funcargs=dict(input=input, expected=expected))
def test_evenHigherThanSquare(input, expected):
assert evenHigherThanSquare(input) == expected