【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 “参数”  参数后面还可以跟 andornot

 

运行已经打好标记的函数,还需要对标签名进行注册,告诉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

posted @ 2023-04-03 13:52  Phoenixy  阅读(293)  评论(0编辑  收藏  举报