Pytest权威教程25-配置
配置
命令行选项和配置文件设置
你可以使用常规帮助选项获取有关INI选项配置文件中命令行选项和值的帮助:
pytest -h # prints options _and_ config file settings
这将显示已安装插件注册的命令行和配置文件设置。
初始化:确定ROOTDIR和INIFILE
pytest根据rootdir命令行参数(指定的测试文件,路径)以及ini-files的存在为每次测试运行确定一个。在启动过程中,确定的文件rootdir和ini文件将作为pytest标头的一部分打印。
以下是摘要的pytest用途rootdir:
- 在收集期间构造nodeid;每个测试都分配有一个唯一的nodeid,该id植根于,rootdir并考虑了完整路径,类名,函数名和参数化(如果有)。
- 插件将其用作存储项目/测试运行特定信息的稳定位置;例如,内部缓存插件在其中创建一个.pytest_cache子目录rootdir来存储其交叉测试运行状态。
需要特别强调的是,rootdir它不用于修改sys.path/PYTHONPATH或影响模块的导入方式。有关更多详细信息,请参见:Pytest导入机制和系统路径。
--rootdir=path命令行选项可用于强制使用特定目录。可以配合使用在pytest.ini文件中的addopts项中添加该参数来包含特定目录到环境变量中。
寻找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文件,则使用已经确定的公共祖先作为根目录。这允许在不属于包且没有任何特定ini文件配置的结构中使用pytest。
- 如果没有args给出,pytest会在当前工作目录下收集测试,并从那里开始确定rootdir。
注意:自定义pytest plugin命令行参数可能包含路径,如中所示 。然后是强制性的,否则pytest使用test.log文件夹确定rootdir(另请参见问题1435)。也可以使用点来引用当前工作目录。pytest --log-output ../../test.log argsargs.
请注意,现有的pytest.ini文件将始终被认为是匹配的,而tox.ini且setup.cfg只会如果包含匹配 [pytest]或[tool:pytest]部分,分别。多个ini-file候选文件中的选项永远不会合并-第一个获胜(pytest.ini即使不包含任何[pytest]部分,也总是成功)。
该config对象随后将具有以下属性:
- config.rootdir:确定的根目录,保证存在。
- config.inifile:确定的ini文件可能是None。
rootdir用作构建测试地址(“ nodeids”)的参考目录,也可以由插件用于存储每次测试运行信息。
例如:
pytest path/to/testdir path/other/
将确定共同祖先path,然后检查ini文件,如下所示:
# first look for pytest.ini files
path/pytest.ini
path/tox.ini # must also contain [pytest] section to match
path/setup.cfg # must also contain [tool: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
[pytest]
addopts = -ra -q
# content of setup.cfg
[tool: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
请注意,与其他命令行应用程序一样,在选项冲突的情况下,最后一个将获胜,因此上面的示例将显示冗长的输出,因为-voverwrites -q。
内置的配置文件选项
有关选项的完整列表,请参考参考文档。
Pytest权威教程25-配置的更多相关文章
- Pytest权威教程14-缓存:使用跨执行状态
目录 缓存:使用跨执行状态 使用方法 首先只重新运行故障或故障 上次运行中没有测试失败时的行为 新的config.cache对象 检查缓存内容 清除缓存内容 逐步修复失败用例 unittest.Tes ...
- Pytest权威教程19-编写钩子(Hooks)方法函数
目录 编写钩子(Hooks)函数 钩子函数验证和执行 firstresult: 遇到第一个有效(非None)结果返回 hookwrapper:在其他钩子函数周围执行 钩子(Hooks)函数排序/调用示 ...
- Pytest权威教程21-API参考-07-配置选项(Configuration Options)
目录 配置选项(Configuration Options) addopts cache_dir confcutdir console_output_style doctest_encoding do ...
- Pytest权威教程21-API参考-05-对象(Objects)
目录 对象(Objects) CallInfo Class Collector Config ExceptionInfo FixtureDef FSCollector Function Item Ma ...
- Pytest权威教程21-API参考-04-钩子(Hooks)
目录 钩子(Hooks) 引导时的Hook方法 初始化时的Hook方法 测试运行时的Hook方法 收集用例时的Hook方法 生成测试结果时的Hook方法 调试/交互Hook方法 返回: Pytest权 ...
- Pytest权威教程21-API参考-03-夹具(Fixtures)
目录 夹具(Fixtures) @ pytest.fixture config.cache的 capsys capsysbinary capfd capfdbinary doctest_namespa ...
- Pytest权威教程02-Pytest 使用及调用方法
目录 Pytest 使用及调用方法 使用python -m pytest调用pytest 可能出现的执行退出code 获取版本路径.命令行选项及环境变量相关帮助 第1(N)次失败后停止测试 指定及选择 ...
- Pytest权威教程05-Pytest fixtures:清晰 模块化 易扩展
目录 Pytest fixtures:清晰 模块化 易扩展 Fixtures作为函数参数使用 Fixtures: 依赖注入的主要例子 conftest.py: 共享fixture函数 共享测试数据 生 ...
- Pytest权威教程08-使用tmp目录和文件
目录 使用tmp目录和文件 tmp_path Fixture方法 tmp_path_factory Fixture方法 tmpdir Fixture方法 tmpdir_factory Fixture方 ...
随机推荐
- 使用activiti的designer插件记录
1.activiti添加排他网,条件下载condition中 2.activiti添加监听Listener,知道3种方法 1.实现taskListener 通过加载java class的方式去加载实现 ...
- 了解Django之前
什么是web应用? 通俗地讲,就是通过浏览器访问一个网址,该网站从后台调取数据,然后把相应的界面展示给用户这样的一个过程. 什么是HTTP协议? 即超文本传输协议:规定了客户端与服务端消息传输的格 ...
- 实战FFmpeg--iOS平台使用FFmpeg将视频文件转换为YUV文件
做播放器的开发这里面涉及的东西太多,我只能一步步往前走,慢慢深入.播放器播放视频采用的是渲染yuv文件.首先,要知道yuv文件是怎么转换得来的,其次,要知道怎么把视频文件保存为yuv文件.雷神的文章1 ...
- Mock测试框架(Mockito为例)
在做单元测试的时候,有的时候用到的一些类,我们构造起来不是那么容易,比如HttpRequest,或者说某个Service依赖到了某个Dao,想构造service还得先构造dao,这些外部对象构造起来比 ...
- Python多版本环境搭建(Linux系统)
python Linux 环境 (版本隔离工具) 首先新建用户,养成良好习惯 useradd python 1.安装pyenv GitHub官网: https://github.c ...
- 关于在centos下安装python3.7.0以上版本时报错ModuleNotFoundError: No module named '_ctypes'的解决办法
3.7版本需要一个新的包libffi-devel,安装此包之后再次进行编译安装即可. #yum install libffi-devel -y#make install若在安装前移除了/usr/bin ...
- mysql_safe和mysql_multi
1 mysql_safe 原理 mysqld_safe其实为一个shell脚本(封装mysqld),启动时需要调用server和database(即/bin和/data目录),因此需要满足下述条件之一 ...
- 【独家】K8S漏洞报告 | CVE-2019-1002101解读
kubectl cp漏洞CVE-2019-1002101分析 Kube-proxy IPVS添加flag ipvs-strict-arp 近期bug fix数据分析 ——本期更新内容 kubectl ...
- opencv摄像头读取图片
# 摄像头捕获图像或视频import numpy as np import cv2 # 创建相机的对象 cap = cv2.VideoCapture(0) while(True): # 读取相机所拍到 ...
- qingqing的项目
1 https://www.cnblogs.com/zhangqing979797/p/10147679.html 2 https://www.cnblogs.com/zhangqing979797/ ...