装饰器parametrize
@pytest.mark.parametrize(argnames, argvalues, ids=None):
- argnames:用逗号分隔的字符串,表示一个或多个参数名称,或参数字符串的列表/元组。
- argvalues:如果仅指定了一个argname,则argvalues是值的列表。
- 如果指定了N个argname,则argvalues必须是N个元组的列表,
- 其中每个元组元素都为其各自的argname指定一个值。
装饰器skip,跳过测试用例
- 无条件的跳过模块中的所有测试:
pytestmark = pytest.mark.skip("all tests still WIP")
- 有条件的跳过模块中的所有测试:
pytestmark = pytest.mark.skipif(sys.platform == "win32", "tests for linux only")
- 当import错误时,跳过模块中的所有测试:
pexpect = pytest.importorskip("pexpect")
XFail:标记测试用例是期望失败的
@pytest.mark.xfail
- strict参数,这个参数会让XPASS的结果在测试报告中变成失败。
@pytest.mark.xfail(strict=True)
def test_function(): ...
- 也可以在ini中通过xfail_strict来指定strict参 数:
[pytest]
xfail_strict=true
- reason参数,如同skipif一样,你可以标记你在某个特定平台上期望测试是失败的。
@pytest.mark.xfail(sys.version_info >= (3, 6), reason="Python3.6 api changes")
def test_function(): ...
- raises参数,如果你想更清楚的表达测试为什么失败,你可以用raises参数指定一个或者一组异常
@pytest.mark.xfail(raises=RuntimeError)
def test_function(): ...
- run 参数,如果一个测试应该被标记为xfail并且预期是失败的,但是你又暂时不想运行这个测试用例,那么你可 以将run参数设置为False
@pytest.mark.xfail(run=False)
def test_function(): ...
- 忽略xfail:在命令行中指定下面的参数,可以强制让xfail和pytest.xfail失效。