目录:
- 安装及入门
- 使用和调用方法
- 原有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。
内置配置文件选项
有关选项的完整列表,请参阅参考文档。
