python 之 pytest标记(五)

如何用属性标记测试函数

简单使用

通过使用pytest.mark可以轻松地在测试函数上设置元数据。可以在API参考中找到内置标记的完整列表。

或者可以使用命令行pytest — —markers列出内置的和自定义的所有标记,

内置标记包含:

  • usefixtures - 使用fixutures的测试用例或者类
  • filterwarnings 过滤带警告的测试函数
  • skip 测试的时候跳过该测试用例
  • skipif:根据条件跳过测试。后面可以写条件
  • xfail标记预期失败的测试用例,即使测试失败也不会报告为错误。
  • parametrize:参数化测试,用于通过不同的参数运行同一个测试多次。
  • timeout:设置测试的最大运行时间,超时将中止测试。

创建自定义标记或将标记应用于整个测试类或模块非常容易。这些标记可以被插件使用,也通常用于使用-m选项在命令行上选择测试。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@pytest.mark.usefixtures
def test_function():
# 测试代码
@pytest.mark.skip
def test_function():
# 测试代码
@pytest.mark.skipif(condition, reason=optional_reason)
def test_function():
# 测试代码
@pytest.mark.xfail
def test_function():
# 测试代码
@pytest.mark.parametrize("param", [value1, value2, ...])
def test_function(param):
# 测试代码
@pytest.mark.timeout(timeout_value)
def test_function():
# 测试代码

要运行带有自定义标记 my_marker 的测试项,可以使用以下命令:

1
$ pytest -m my_marker

注册标记

可以在pytest.ini中自定义标记:

1
2
3
4
[pytest]
markers =
slow: marks tests as slow (deselect with '-m "not slow"')
serial

或者在 pyproject.toml 文件中,如下所示:(toml类似于ini文件,也是一种存储配置文件的方式)

1
2
3
4
5
[tool.pytest.ini_options]
markers = [
"slow: marks tests as slow (deselect with '-m \"not slow\"')",
"serial",
]

或者可以在pytest钩子里面注册标记

1
2
3
4
def pytest_configure(config):
config.addinivalue_line(
"markers", "env(name): mark test to run only on named environment"
)

python 之 pytest标记(五)
http://example.com/2024/01/20/665python-之-pytest标记(五)/
作者
Wangxiaowang
发布于
2024年1月20日
许可协议