使用属性标记测试函数¶
通过使用 pytest.mark ,您可以在测试函数上轻松地设置元数据。有一些内置标记,例如:
- skip - 总是跳过测试函数
- skipif - 如果满足某个条件,则跳过测试函数
- xfail - 如果满足某个条件,则产生”预期失败”结果
- parametrize - 对同一测试函数执行多次调用
我们可以很容易创建自定义标记,或将标记应用于整个测试类/模块。这些标记可以由插件使用,
通常也用于命令行中 -m 选项来 选择测试 。
请参阅 Working with custom markers 查看标记的示例和文档。
注解
标记只能应用于测试,对 fixtures 不起作用。
注册标记¶
您可以在 pytest.ini 文件中注册自定义标记,如下所示:
[pytest]
markers =
slow: marks tests as slow (deselect with '-m "not slow"')
serial
注意, : 之后的所有内容都是可选说明。
或者,您可以在 pytest_configure 钩子中程序化注册新标记:
def pytest_configure(config):
config.addinivalue_line(
"markers", "env(name): mark test to run only on named environment"
)
注册标记出现在pytest的帮助文本中,不会产生警告(请参阅下一节)。建议第三方插件始终 注册其标记
对未知标记提出错误¶
使用 @pytest.mark.name_of_the_mark 装饰器应用未注册标记总是会发出警告,以避免由于名称键入错误而导致的意外操作。
如前一节所述,可以通过在 pytest.ini 文件中注册自定义的标记,或使用 pytest_configure 钩子来禁用警告。
当使用 --strict-markers 命令行标志时, 任何使用 @pytest.mark.name_of_the_mark 装饰器的未知标记都将触发一个错误。
您可以通过在 addopts 里面添加 --strict-marker 在项目中验证:
[pytest]
addopts = --strict-markers
markers =
slow: marks tests as slow (deselect with '-m "not slow"')
serial