Pytest权威教程21-API参考-07-配置选项(Configuration Options)

时间:2021-05-09 06:07:02

返回: Pytest权威教程

配置选项(Configuration Options)

这里是一个可以在被写入内置的配置选项的列表pytest.ini,tox.inisetup.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

将指定OPTS的命令行参数添加到命令行参数集中,就像它们已由用户指定一样。示例如:如果你有此ini文件内容:

# content of pytest.ini
[pytest]
addopts = --maxfail=2 -rf # exit after 2 failures,report fail info

发行实际意味着:pytesttest_hello.py

pytest --maxfail=2 -rf test_hello.py

默认是不添加选项。

cache_dir

设置存储缓存插件内容的目录。默认目录是.pytest_cache在rootdir中。

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只在从根目录执行时查找testingdoc目录中的测试。

usefixtures

将应用于所有测试函数的Fixture方法列表;这在语义上与将@pytest.mark.usefixtures标记应用于所有测试函数相同。

[pytest]
usefixtures =
clean_db

xfail_strict

如果设置为True,则标记为@pytest.mark.xfail实际成功的测试将默认为测试套件失败。有关更多信息,请参阅strict参数。

[pytest]
xfail_strict = True