Pytest权威教程21-API参考-07-配置项
配置项
这里是一个可以在被写入内置的配置选项的列表pytest.ini
,tox.ini
或setup.cfg
通常位于版本库的根文件。所有选项必须在一个[pytest]
部分下([tool:pytest]
对于setup.cfg
文件)。
注意:
的使用setup.cfg
是不推荐,除非非常简单的用例。.cfg
文件使用不同的解析器pytest.ini
,tox.ini
这可能导致难以追踪问题。如果可能,建议使用后面的文件来保存pytest配置。
配置文件选项可以通过使用在命令行中覆盖,-o/--override
也可以多次传递。预期的格式是name=value
。例如:
pytest -o console_output_style=classic -o cache_dir=/tmp/mycache
配置项 | 说明 | 默认值 |
---|---|---|
addopts | 额外(默认)命令行参数 | 空 |
cache_dir | 缓存路径(用于缓存失败用例) | .pytest_cache |
confcutdir | 设置向上搜索conftest.py 文件的目录 |
空 |
console_output_style | 设置用例执行进度的控制台输出样式,支持classic、progress和count三种 | progress |
addopts
将指定OPTS
的命令行参数添加到命令行参数集中,就像它们已由用户指定一样。例如: pytest.ini文件内容:
# content of pytest.ini
[pytest]
addopts = --maxfail=2 -rf # 失败2个用例后退出并显示失败信息
执行pytest test_hello.py
,实际意味着:
pytest --maxfail=2 -rf test_hello.py
addopts
默认为不添加任何选项。
cache_dir
设置存储缓存插件内容的目录。默认是项目根目录的.pytest_cache
中。
confcutdir
设置向上搜索conftest.py
文件的目录。默认情况下,pytest将停止conftest.py
从项目的pytest.ini
/tox.ini
/向上搜索文件(setup.cfg
如果有),或者直到文件系统根目录。
console_output_style
设置用例执行进度的控制台输出样式:
classic
:经典的pytest输出。progress
:喜欢经典的pytest输出,但带有进度指示器。count
:像进度一样,但随着测试完成次数而不是百分比显示进度。
默认值为progress
,但classic
如果你愿意,或者新模式导致意外问题,你可以回退到:
# content of pytest.ini
[pytest]
console_output_style = classic
doctest_encoding
用于解码带有文档字符串的文本文件的默认编码。看看pytest如何处理doctests。
doctest_optionflags
标准doctest
模块中的一个或多个doctest标志名称。看看pytest如何处理doctests。
empty_parameter_set_mark
允许在参数化中为空参数选择操作
skip
使用空参数跳过测试(默认)xfail
使用空参数标记测试为xfail(run = False)fail_at_collect
如果parametrize收集空参数集,则引发异常
# content of pytest.ini
[pytest]
empty_parameter_set_mark = xfail
注意:计划
xfail
在将来的版本中更改此选项的默认值,因为这被认为不易出错,有关详细信息,请参阅#3155。
filterwarnings
设置应为匹配的警告采取的过滤器和操作的列表。默认情况下,测试会话期间发出的所有警告都将在测试会话结束时显示在摘要中。
# content of pytest.ini
[pytest]
filterwarnings =
error
ignore::DeprecationWarning
这告诉pytest忽略弃用警告并将所有其他警告变为错误。有关更多信息,请参阅警告捕获。
junit_family
版本4.2中的新函数。
配置生成的JUnit XML文件的格式。可能的选择是:
xunit1(或
legacy`):生成旧样式输出,与xunit 1.0格式兼容。这是默认值。xunit2
:生成xunit 2.0样式输出,哪个应该与最新的Jenkins版本更兼容。
[pytest]
junit_family = xunit2
junit_suite_name
要设置根测试套件xml项的名称,可以junit_suite_name
在配置文件中配置该选项:
[pytest]
junit_suite_name = my_suite
log_cli_date_format
设置一个time.strftime()
兼容的字符串,该字符串将在格式化实时日志记录的日期时使用。
[pytest]
log_cli_date_format = %Y-%m-%d %H:%M:%S
有关更多信息,请参阅实时日志。
log_cli_format
设置logging
用于格式化实时日志记录消息的兼容字符串。
[pytest]
log_cli_format = %(asctime)s %(levelname)s %(message)s
有关更多信息,请参阅实时日志。
log_cli_level
设置应为实时日志记录捕获的最小日志消息级别。可以使用整数值或级别的名称。
[pytest]
log_cli_level = INFO
有关更多信息,请参阅实时日志。
log_date_format
设置time.strftime()
与日志记录捕获格式化日期时将使用的兼容字符串。
[pytest]
log_date_format = %Y-%m-%d %H:%M:%S
有关更多信息,请参阅日志记录。
log_file
pytest.ini
除了活动的其他日志记录工具之外,还应设置相对于应写入日志消息的文件的文件名。
[pytest]
log_file = logs/pytest-logs.txt
有关更多信息,请参阅日志记录。
log_file_date_format
设置time.strftime()
在格式化日志文件的日期时将使用的兼容字符串。
[pytest]
log_file_date_format = %Y-%m-%d %H:%M:%S
有关更多信息,请参阅日志记录。
log_file_format
设置一个logging
兼容的字符串,用于格式化重定向到日志文件的日志消息。
[pytest]
log_file_format = %(asctime)s %(levelname)s %(message)s
有关更多信息,请参阅日志记录。
log_file_level
设置应为日志记录文件捕获的最小日志消息级别。可以使用整数值或级别的名称。
[pytest]
log_file_level = INFO
有关更多信息,请参阅日志记录。
log_format
设置logging
用于格式化捕获的日志消息的兼容字符串。
[pytest]
log_format = %(asctime)s %(levelname)s %(message)s
有关更多信息,请参阅日志记录。
log_level
设置应记录捕获的最小日志消息级别。可以使用整数值或级别的名称。
[pytest]
log_level = INFO
有关更多信息,请参阅日志记录。
log_print
如果设置为False
,将禁用显示失败测试的捕获日志消息。
[pytest]
log_print = False
有关更多信息,请参阅日志记录。
markers
使用--strict
命令行参数时,只允许使用已知的标记(由代码核心pytest或某些插件定义)。你可以在此设置中列出其他标记,以将其添加到白名单。
你可以列出每行一个标记名称,从选项名称缩进。
[pytest]
markers =
slow
serial
minversion
指定运行测试所需的最小pytest版本。
# content of pytest.ini
[pytest]
minversion = 3.0 # will fail if we run with pytest-2.8
norecursedirs
设置目录basename模式以避免在递归测试发现时使用。各个(fnmatch样式)模式应用于目录的基本名称,以决定是否递归到目录。模式匹配字符:
- matches everything
? matches any single character
[seq] matches any character in seq
[!seq] matches any char not in seq
默认模式是。设置替换默认值。以下是如何避免某些目录的示例如:'.*','build','dist','CVS','_darcs','{arch}','*.egg','venv'``norecursedirs
[pytest]
norecursedirs = .svn _build tmp*
这将告诉pytest
我们不要查看典型的subversion或sphinx-build目录或任何tmp
前缀目录。
此外,pytest
将尝试通过激活脚本的存在智能地识别和忽略virtualenv。除非‑‑collect‑in‑virtualenv
给出,否则在测试收集期间不会考虑任何被视为虚拟环境根目录的目录。另请注意,norecursedirs
优先于‑‑collect‑in‑virtualenv
;例如,如果你打算在virtualenv中使用匹配的基本目录运行测试,则除了使用该标志外,'.*'
还必须覆盖。norecursedirs``‑‑collect‑in‑virtualenv
python_classes
一个或多个名称前缀或glob样式模式,用于确定考虑用于测试集合的类。通过在模式之间添加空格来搜索多个glob模式。默认情况下,pytest会将任何以前缀Test
为前缀的类视为测试集合。以下是如何从以下结尾的类中收集测试的示例Suite
:
[pytest]
python_classes = *Suite
请注意,unittest.TestCase
无论此选项如何,始终都会收集派生类,因为unittest
自己的集合框架用于收集这些测试。
python_files
一个或多个Glob样式的文件模式,用于确定哪些python文件被视为测试模块。通过在模式之间添加空格来搜索多个glob模式:
[pytest]
python_files = test_*.py check_*.py example_*.py
或者每行一个:
[pytest]
python_files =
test_*.py
check_*.py
example_*.py
默认情况下,匹配的文件test_*.py
和*_test.py
将被视为测试模块。
python_functions
一个或多个名称前缀或glob-patterns,用于确定哪些测试函数和方法被视为测试。通过在模式之间添加空格来搜索多个glob模式。默认情况下,pytest会将任何前缀test
为函数的函数视为测试。以下是如何收集以下结尾的测试函数和方法的示例_test
:
[pytest]
python_functions = *_test
请注意,这对生成在派生类上的方法没有影响,因为自己的集合框架用于收集这些测试。unittest.TestCase``unittest
有关更多详细示例,请参阅更改命名约定。
testpaths
当从rootdir目录执行pytest时,如果在命令行中没有给出特定的目录,文件或测试ID,则设置应搜索测试的目录列表。当所有项目测试都在一个已知位置以加速测试收集并避免意外接收不需要的测试时非常有用。
[pytest]
testpaths = testing doc
这告诉pytest只在从根目录执行时查找testing
和doc
目录中的测试。
usefixtures
将应用于所有测试函数的Fixture方法列表;这在语义上与将@pytest.mark.usefixtures
标记应用于所有测试函数相同。
[pytest]
usefixtures =
clean_db
xfail_strict
如果设置为True
,则标记为@pytest.mark.xfail
实际成功的测试将默认为测试套件失败。有关更多信息,请参阅strict参数。
[pytest]
xfail_strict = True