pytest.ini 配置

发布时间:2024年01月19日

一、概述

  • pytest.ini 文件是一个用于配置 pytest 测试运行器的配置文件。
  • 它可以用于指定各种 pytest 的行为和选项,以定制测试运行的方式。
  • 注意:请确保在项目根目录下创建并正确配置 pytest.ini 文件,并确保文件名为 pytest.ini,以使 pytest 能够正确读取并应用配置。

二、常用配置说明

2.1 添加命令行选项

  • addopts:该选项用于添加额外的命令行选项和标志,它可以代替重复性的命令输入(尤其是命令行参数过长时):
[pytest]

addopts = -v --cov=myproject --cov-report=html
  • 这个示例中,-v 表示输出详细的测试结果,--cov=myproject 表示使用代码覆盖率工具测量项目中的代码覆盖率,--cov-report=html 表示生成 HTML 格式的代码覆盖率报告。
  • 这样执行命令行的时候,就不需要每次都手动加上这些参数了。

2.2 查找测试文件路径

  • testpaths: 该选项用于指定 pytest 查找测试文件的路径。你可以在其中列出要搜索的目录或文件:
[pytest]

testpaths = tests
  • 这个示例中,表示测试文件位于项目根目录下的 tests 文件夹中。

2.3 匹配指定的测试文件

  • python_files: 该选项用于指定 pytest 应该查找的测试文件的命名模式。你可以使用通配符或正则表达式来匹配特定的文件名:
[pytest]

python_files = test_*.py
  • 这个示例中,test_*.py 表示 pytest 应该查找以 test_ 开头的 Python 文件作为测试文件。

2.4 匹配指定的测试类

  • python_classes: 该选项用于指定 pytest 应该查找的测试类的命名模式。你可以使用通配符或正则表达式来匹配特定的类名:
[pytest]

python_classes = Test*
  • 这个示例中,Test* 表示 pytest 应该查找以 Test 开头的测试类。

2.5 匹配指定的测试函数

  • python_functions: 该选项用于指定 pytest 应该查找的测试函数的命名模式。你可以使用通配符或正则表达式来匹配特定的函数名:
[pytest]

python_functions = *_test
  • 这个示例中,*_test 表示 pytest 应该查找以 _test 结尾的测试函数。

2.6 自定义的测试标记

  • markers: 该选项用于定义自定义的测试标记。你可以通过标记标识特定类型的测试用例,然后使用 -m 选项来选择性地运行带有特定标记的测试用例。:
[pytest]

markers =
    mac: run on mac
    linux: run on linux
    windows: run on windows

2.7 变更预期不一致用例的状态

  • xfail_strict:xfail_strict 是一个布尔类型的配置项,默认为 False
  • 当 xfail_strict 设置为 True 时,表示严格处理预期失败的测试用例(通过 @pytest.mark.xfail 标记的用例)。
  • 如果一个预期失败的用例在运行时实际成功了,或者一个预期成功的用例在运行时实际失败了,将会被视为测试失败。
  • 设置 xfail_strict 为 False 时,预期失败的用例即使实际成功了,仍然会被视为通过。
[pytest]

xfail_strict = True
  • 上述配置将启用严格的预期失败处理,确保预期失败的用例在实际成功时被视为失败。

2.8 设置运行过程中的命令行日志级别

  • log_cli:log_cli 是一个字符串类型的配置项,用于设置 pytest 运行过程中的命令行日志级别。
  • 可用的选项包括:CRITICALERRORWARNINGINFODEBUG
  • 默认情况下,log_cli 的值为空,即不会在命令行显示日志
[pytest]

log_cli = INFO
  • 上述配置将在命令行中显示 INFO 级别及以上的日志信息。

2.9 指定不需要递归搜索的目录

  • norecursedirs:用于指定在运行测试时不需要递归搜索的目录
  • 这是一个非常有用的配置项,可以帮助排除不需要进行测试的目录,提高测试运行的效率
  • 使用 norecursedirs 可以指定一个目录列表,这些目录将被排除在测试递归搜索之外。可以使用相对路径或绝对路径来设置目录。
[pytest]

norecursedirs = tests/data docs
  • 在上面的示例中,norecursedirs 的值为 “tests/data docs”,它指定了两个目录(多个路径用空格分隔):tests/data 和 docs。这两个目录将被排除在 pytest 的测试递归搜索之外,即测试运行时不会扫描这两个目录下的测试文件。

三、结束语


“-------怕什么真理无穷,进一寸有一寸的欢喜。”

微信公众号搜索:饺子泡牛奶

文章来源:https://blog.csdn.net/weixin_48776531/article/details/135708270
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。