目录:
- 安装及入门
- 使用和调用方法
- 原有TestSuite使用方法
- 断言的编写和报告
- Pytest fixtures:清晰 模块化 易扩展
- 使用Marks标记测试用例
- Monkeypatching/对模块和环境进行Mock
- 使用tmp目录和文件
- 捕获stdout及stderr输出
- 捕获警告信息
- 模块及测试文件中集成doctest测试
- skip及xfail: 处理不能成功的测试用例
- Fixture方法及测试用例的参数化
- 缓存: 使用跨执行状态
- unittest.TestCase支持
- 运行Nose用例
- 经典xUnit风格的setup/teardown
- 安装和使用插件
- 插件编写
- 编写钩子(hook)方法
- 运行日志
- API参考
- 优质集成实践
- 片状测试
- Pytest导入机制及sys.path/PYTHONPATH
- 配置选项
- 示例及自定义技巧
- Bash自动补全设置
配置选项
命令行选项和配置文件设置
你可以使用常规帮助选项获取INI样式配置文件中命令行选项和值的帮助:
pytest -h # prints options _and_ config file settings
这将显示已安装插件注册的命令行和配置文件设置。
初始化:确定ROOTDIR和INIFILE
版本2.7中的新功能。
pytest rootdir
为每次测试运行确定a ,这取决于命令行参数(指定的测试文件,路径)和ini文件的存在。确定的rootdir
和ini文件在启动期间作为pytest标题的一部分打印。
下面是一个总结pytest
用途rootdir
为:
- 在收集期间构造nodeids ; 每个测试都分配了一个唯一的nodeid,它以root为根,
rootdir
并考虑了完整路径,类名,函数名和参数化(如果有的话)。 - 插件使用它作为存储项目/测试运行特定信息的稳定位置; 例如,内部缓存插件创建一个
.pytest_cache
子目录rootdir
以存储其交叉测试运行状态。
重要的是要强调的是,rootdir
是不是用来修改sys.path
/ PYTHONPATH
或影响模块的导入方式。有关更多详细信息,请参阅pytest import mechanisms和sys.path / PYTHONPATH。
--rootdir=path
命令行选项可用于强制特定目录。该目录通过可以包含环境变量,当它配合使用addopts
的pytest.ini
文件。
找到rootdir
以下是从以下位置查找rootdir的算法args
:
- 确定指定的公共祖先目录,这些目录
args
被识别为文件系统中存在的路径。如果未找到此类路径,则将共同的祖先目录设置为当前工作目录。 - 寻找
pytest.ini
,tox.ini
并setup.cfg
在父目录和文件向上。如果匹配一个,它将成为ini文件,其目录将成为rootdir。 - 如果没有找到ini文件,请
setup.py
从共同的祖先目录中查找以确定rootdir
。 - 如果没有
setup.py
找到,请查找pytest.ini
,tox.ini
并setup.cfg
在每个指定args
和向上。如果匹配一个,它将成为ini文件,其目录将成为rootdir。 - 如果没有找到ini文件,请使用已确定的共同祖先作为根目录。这允许在不属于包的结构中使用pytest,并且没有任何特定的ini文件配置。
如果没有args
给出,pytest会在当前工作目录下收集测试,并从那里开始确定rootdir。
<colgroup><col class="field-name" style="hyphens: manual;"><col class="field-body"></colgroup>
| 警告: | 自定义pytest插件命令行参数可以包含路径,如 。然后是必需的,否则pytest使用test.log的文件夹进行rootdir确定(另请参阅问题1435)。一个点为参照,以当前的工作目录也是可能的。pytest --log-output ../../test.log args``args
.
|
请注意,现有的pytest.ini
文件将始终被认为是匹配的,而tox.ini
且setup.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
。
内置配置文件选项
有关选项的完整列表,请参阅参考文档。