【pytest】 pytest自定义标记及注册标记 (出现 PytestUnknownMarkWarning 的处理方式)
pytest.mark
内置标记
usefixture-在测试函数或类上使用fixture filterwarnings-筛选测试函数的某些警告 skip-始终跳过测试函数 skipif-如果满足特定条件,则跳过测试函数 xfail-如果满足特定条件,则产生“预期失败”结果 parameterize-对同一测试函数执行多次调用。
TIps: 创建自定义标记或将标记应用于整个测试类或模块都很容易。这些标记可以被插件使用,也通常用于通过-m选项在命令行上选择测试。
自定义标记
在@pytest.mark.需要自定义标记的名称
@pytest.mark.markname
Tips:可以标记在测试用例的函数上,或者类上。
执行命令 <执行指定标记名的case>
“-m 参数” 参数后面还可以跟 and, or,not
cmd执行命令 <执行指定标记名的case>
-m “参数” 参数后面还可以跟 and, or,not
运行已经打好标记的函数,还需要对标签名进行注册,告诉pytest有哪些标签,如果不进行注册运行时(pytest的高级版本)可能会报警告让你进行注册
未注册标记会出现 warnings summary -- PytestUnknownMarkWarning
PytestUnknownMarkWarning: Unknown pytest.mark.demo - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
@pytest.mark.demo
注册标记
在项目目录下新建 pytest.ini 、conftest.py ...
在pytest.ini文件中注册自定义标记
[pytest]
markers = mark1 mark2 ...
pyproject.toml文件中
[tool.pytest.ini_options] 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] addopts = --strict-markers markers = mark1 mark2 ...
参考: https://docs.pytest.org/en/stable/how-to/mark.html
-------------------------------------------------------------------------------------
如果万事开头难 那请结局一定圆满 @ Phoenixy
-------------------------------------------------------------------------------------