与py.测试我经常生成一些测试用例可能失败的测试。如何将它们标记为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
当然,您可以使用funcarg factory到apply an xfail marker(since 1.3.2):
这里我们使用未使用的
xfail
参数test_evenHigherThanSquare
来触发对每个测试项的pytest_funcarg__xfail
的调用;它使用提供给metafunc.addcall
的param
来决定是否完成测试。在Funcarg工厂更常用于生成在收集时创建成本高昂的参数,但应用标记也是一种完全受支持的用法。在
相关问题 更多 >
编程相关推荐