一、pytest.ini 常见配置节
在pytest.ini
文件中,方括号[]
内的命名并不是完全固定的,但有一定的约定和限制。这些命名通常用于定义不同的配置节,每个节包含了一组相关的配置项。以下是一些常见的配置节及其用途:
[pytest]
:这是默认的节,用于设置全局的Pytest选项和配置,如命令行参数、测试文件路径、markers定义等。[markers]
:用于定义自定义的markers,这些markers可以在测试用例中使用,以进行更细粒度的测试选择和分类。[hook]
:用于定义Pytest的钩子(hooks),这些钩子是在测试执行的特定时刻自动调用的函数。[setup]
:用于配置测试会话的设置选项,如全局的setup
和teardown
函数。[env]
:用于定义环境变量,这些变量可以在测试代码中通过os.environ
访问。[python]
:用于设置Python选项,如模块搜索路径、Python路径等。[logging]
:用于配置日志记录选项。[html]
:用于配置HTML报告的生成选项。[junit]
:用于配置JUnit兼容的XML报告的生成选项。[testpaths]
:用于指定测试文件的搜索路径。
除了这些常见的节,你还可以定义自定义节来组织特定的配置项。自定义节的命名通常遵循以下规则:
- 节名应该以
[]
包围,且不允许有空格。 - 节名可以包含字母、数字、下划线和短横线,但不以数字开头。
- 节名应该具有描述性,以便于理解其用途。
自定义节通常与插件相关联,插件可以定义自己的配置节来读取特定的配置项。例如,如果你使用了pytest-xdist
插件,它可能提供了[pytest-xdist]
节来配置并行测试执行的相关选项。
总之,pytest.ini
文件中的节命名不是完全固定的,但应该遵循一定的约定和最佳实践,以确保配置的清晰性和一致性。
二、pytest.ini 配置框架参考
在pytest.ini
文件中,你可以定义多个节来组织不同类型的配置,以便更好地管理和维护你的测试环境。以下是一个包含多个常见配置项的pytest.ini
文件示例:
[pytest]
# 添加默认的命令行选项
addopts = -v -s --html=report.html --self-contained-html
# 指定测试文件和目录的收集规则
testpaths =
./tests
# 定义Pytest的markers,用于标记特定的测试用例
markers =
smoke: marks tests as part of the smoke test suite
slow: marks tests as slow (deselect with '-m "not slow"')
# 配置环境变量
env =
API_URL=https://api.example.com
DATABASE_URI=sqlite:///test.db
# 设置Python的模块搜索路径
python_paths =
./src
./lib
# 配置日志记录级别和格式
log_cli = true
log_cli_level = INFO
log_cli_format = %(asctime)s [%(levelname)s] %(message)s
# 配置测试前的全局设置和测试后的全局清理
[setup]
addopts = --setup-show
# 配置测试函数执行前后的钩子函数
[hook]
setup = my_package.hooks.setup_hook
teardown = my_package.hooks.teardown_hook
# 配置插件选项
[pytest11]
load_timeout = 5
# 配置fixture的使用方式
[fixture]
autouse = True
# 配置测试报告生成的详细级别
[html]
junit_suite_name = 'My Test Suite'
title = 'My Project Test Report'
在这个示例中,我们定义了以下内容:
[pytest]
节:设置了默认的命令行选项,如详细模式(-v
)、显示输出(-s
)、生成HTML报告(--html=report.html
)等。testpaths
:指定了Pytest应该搜索测试用例的目录。markers
:定义了自定义的标记,可以在测试用例中使用。env
:设置了环境变量,这些变量可以在测试代码中使用。python_paths
:添加了额外的Python模块搜索路径。log_cli
:配置了日志记录的选项,如是否显示日志、日志级别和格式。[setup]
节:配置了全局设置的选项。[hook]
节:定义了测试执行前后的钩子函数。[pytest11]
节:配置了pytest11插件的选项。[fixture]
节:配置了fixture的自动使用选项。[html]
节:配置了HTML报告的详细选项,如JUnit套件名称和报告标题。
这个pytest.ini
文件提供了一个全面的测试配置框架,可以根据你的项目需求进行调整和扩展。记得在修改配置文件后,重新运行你的测试套件以确保新的配置生效。