pytest8.x版本 中文使用文档-------5.如何用属性标记测试函数

目录

注册标志

对未知标记引发错误


通过使用pytest.mark辅助工具,您可以轻松地在测试函数上设置元数据。您可以在API参考(API Reference)中找到内置标记的完整列表。或者,您可以使用命令行接口(CLI)pytest --markers来列出所有标记,包括内置的和自定义的。

以下是一些内置标记的示例:

  • usefixtures - 在测试函数或类上使用fixtures
  • filterwarnings - 过滤测试函数中的某些警告
  • skip - 始终跳过测试函数
  • skipif - 如果满足某个条件,则跳过测试函数
  • xfail - 如果满足某个条件,则产生“预期失败”的结果
  • parametrize - 对同一个测试函数执行多次调用,每次调用时使用不同的参数

这些标记提供了一种灵活的方式来控制测试的执行,包括跳过某些测试、在特定条件下修改测试行为,以及基于不同参数集运行测试。通过使用这些标记,您可以更细致地控制测试套件的行为,以适应不同的测试场景和需求。

创建自定义标记或将标记应用于整个测试类或模块很容易。这些标记可以由插件使用,并且也常用于通过命令行上的-m选项来选择测试(select tests )。

请参阅“使用自定义标记”(Working with custom markers)部分中的示例,这些示例也作为文档使用。

注意:
标记只能应用于测试,对 fixtures没有影响。

注册标志

你可以像这样在pytest.ini文件中注册自定义标记:

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

或者,在您的pyproject.toml文件中,可以像这样配置:

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

注意,pyproject.toml文件是Python项目的一个配置文件,它遵循TOML(Tom's Obvious, Minimal Language)格式。在pytest中,这个文件可以用来配置pytest的某些选项,而不需要创建一个单独的pytest.inisetup.cfg文件。但是,请确保您的pytest版本支持从pyproject.toml文件中读取配置。

请注意,在标记名称后的冒号:之后的所有内容都是可选的描述。

另外,您也可以在pytest_configure 钩子中编程方式注册新的标记:

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

注册的标记会出现在pytest的帮助文本中,并且不会发出警告(参见下一节)。建议第三方插件总是注册它们的标记( register their markers)。

对未知标记引发错误

使用@pytest.mark.name_of_the_mark装饰器应用的未注册标记总是会发出警告,以避免由于名称拼写错误而默默地执行一些令人惊讶的操作。如前一节所述,您可以通过在pytest.ini文件中注册自定义标记或使用自定义的pytest_configure钩子来禁用这些警告。

当传递--strict-markers命令行标志时,使用@pytest.mark.name_of_the_mark装饰器应用的任何未知标记都会触发错误。您可以通过将--strict-markers添加到addopts中来在您的项目中强制执行此验证,这样pytest在运行时就会对未知标记进行严格检查,确保测试代码的准确性和一致性。这样做可以帮助维护测试代码的质量,避免由于标记使用不当而导致的潜在问题。

[pytest]
addopts = --strict-markers
markers =
    slow: marks tests as slow (deselect with '-m "not slow"')
    serial

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值