热门搜索 :
考研考公
您的当前位置:首页正文

Pytest官方教程-26-配置选项

来源:东饰资讯网

目录:

配置选项

命令行选项和配置文件设置

你可以使用常规帮助选项获取INI样式配置文件中命令行选项和值的帮助:

pytest -h   # prints options _and_ config file settings

这将显示已安装插件注册的命令行和配置文件设置。

初始化:确定ROOTDIR和INIFILE

版本2.7中的新功能。

pytest rootdir为每次测试运行确定a ,这取决于命令行参数(指定的测试文件,路径)和ini文件的存在。确定的rootdirini文件在启动期间作为pytest标题的一部分打印。

下面是一个总结pytest用途rootdir为:

  • 在收集期间构造nodeids ; 每个测试都分配了一个唯一的nodeid,它以root为根,rootdir并考虑了完整路径,类名,函数名和参数化(如果有的话)。
  • 插件使用它作为存储项目/测试运行特定信息的稳定位置; 例如,内部插件创建一个.pytest_cache子目录rootdir以存储其交叉测试运行状态。

--rootdir=path命令行选项可用于强制特定目录。该目录通过可以包含环境变量,当它配合使用addoptspytest.ini文件。

找到rootdir

以下是从以下位置查找rootdir的算法args

  • 确定指定的公共祖先目录,这些目录args被识别为文件系统中存在的路径。如果未找到此类路径,则将共同的祖先目录设置为当前工作目录。
  • 寻找pytest.initox.inisetup.cfg在父目录和文件向上。如果匹配一个,它将成为ini文件,其目录将成为rootdir。
  • 如果没有找到ini文件,请setup.py从共同的祖先目录中查找以确定rootdir
  • 如果没有setup.py找到,请查找pytest.initox.inisetup.cfg在每个指定args和向上。如果匹配一个,它将成为ini文件,其目录将成为rootdir。
  • 如果没有找到ini文件,请使用已确定的共同祖先作为根目录。这允许在不属于包的结构中使用pytest,并且没有任何特定的ini文件配置。

如果没有args给出,pytest会在当前工作目录下收集测试,并从那里开始确定rootdir。

请注意,现有的pytest.ini文件将始终被认为是匹配的,而tox.inisetup.cfg只会如果包含匹配 [pytest][tool:pytest]部分,分别。来自多个ini文件候选者的选项永远不会合并 - 第一个获胜(pytest.ini总是获胜,即使它不包含一个[pytest]部分)。

config对象随后将具有以下属性:

  • config.rootdir:确定的根目录,保证存在。
  • config.inifile:确定的ini文件,可能是None

rootdir用于构造测试地址(“nodeids”)的参考目录,并且插件也可以用于存储每个testrun信息。

例:

pytest path/to/testdir path/other/

将确定共同的祖先path,然后检查ini文件如下:

# first look for pytest.ini files
path/pytest.ini
path/setup.cfg  # must also contain [tool:pytest] section to match
path/tox.ini    # must also contain [pytest] section to match
pytest.ini
... # all the way down to the root

# now look for setup.py
path/setup.py
setup.py
... # all the way down to the root

如何更改命令行选项默认值

每次使用时键入相同系列的命令行选项可能会很繁琐pytest。例如,如果你总是希望查看有关跳过和xfailed测试的详细信息,以及具有更快的“点”进度输出,则可以将其写入配置文件:

# content of pytest.ini or tox.ini
# setup.cfg files should use [tool:pytest] section instead
[pytest]
addopts = -ra -q

或者,你可以设置PYTEST_ADDOPTS环境变量以在环境正在使用时添加命令行选项:

export PYTEST_ADDOPTS="-v"

以下是在存在addopts环境变量或环境变量的情况下构建命令行的方法:

<pytest.ini:addopts> $PYTEST_ADDOPTS <extra command-line arguments>

因此,如果用户在命令行中执行:

pytest -m slow

执行的实际命令行是:

pytest -ra -q -v -m slow

请注意,与其他命令行应用程序一样,如果选项冲突,则最后一个获胜,因此上面的示例将显示详细输出,因为会-v覆盖-q

内置配置文件选项

Top