pytest的测试配置插件。
pytest-testconfig的Python项目详细描述
pytest的测试配置插件。
基于jesse noller的nose testconfig。由wojciech olejarz和bart_omiej skrobek为pytest重写。
这个pytest插件是用Cookiecutter和@hackebrot的cookiecutter-pytest-plugin模板生成的。
功能
pytest testconfig是pytest测试框架的插件,用于传递特定于测试(或特定于测试运行)的配置数据 执行的测试。
当前应支持以下格式的配置文件:
- 山药(通过PyYAML)
- INI(通过ConfigParser)
- 纯python(通过exec)
- json(通过JSON)
插件为{TT1}$为灵活,支持执行任意 python文件作为配置文件,无需检查。默认格式为 假定为configparser ini样式格式。
如果提供多个文件,则合并对象。以后的设置将 覆盖以前的那些。
该插件提供了一种覆盖命令中某些参数的方法 行(假设主“config”对象是dict)并且可以很容易地 添加了其他解析器。
可能未提供配置文件。在本例中,config对象是 emtpy dict.任何命令行“覆盖”参数都将添加到dict中。
要求
需要pytest>;=3.5.0
用法
测试可以从testconfig导入“config”单例:
from pytest_testconfig import config
默认情况下,yaml文件解析为嵌套字典,configparser ini 文件也被折叠成foo[bar][baz]样式的嵌套字典 进入。显然,测试可以通过引用 相关字典键:
from pytest_testconfig import config def test_foo(): target_server_ip = config['servers']['webapp_ip']
Warning:鉴于这只是一个字典单例,测试可以很容易地编写 进入配置。这意味着您的测试可以写入配置 空间和可能改变它。这也意味着 配置可能很有趣。
当使用纯python配置时-显然“天空是极限”- 如果配置是通过exec加载的,那么您可以 但是,如果不导出配置{}dict,请修改pytest、插件等。 作为python代码的一部分,显然不能导入 testconfig中的config对象。
当使用yaml风格的配置时,您将获得纯python的强大功能 没有不受保护的exec()的危险-显然可以使用pyaml python特有的对象和所有其他yaml奶油般的好东西。
定义配置文件
简单配置分析器样式:
[myapp_servers] main_server = 10.1.1.1 secondary_server = 10.1.1.2
因此,您的测试将访问如下配置选项:
from pytest_testconfig import config def test_foo(): main_server = config['myapp_servers']['main_server']
- 山药式配置:
- 我的应用程序:
- 服务器:
- 主服务器:10.1.1.1 辅助服务器:10.1.1.2
您的测试可以访问它:
from pytest_testconfig import config def test_foo(): main_server = config['myapp']['servers']['main_server']
python配置文件:
import socket global config config = {} possible_main_servers = ['10.1.1.1', '10.1.1.2'] for srv in possible_main_servers: try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((srv, 80)) except: continue s.close() config['main_server'] = srv break
瞧,配置是这样的:
from pytest_testconfig import config def test_foo(): main_server = config['main_server']
如果需要将python代码放入配置中,则需要使用 python配置文件功能,或者您需要使用!!内的python标记 pyyaml/yaml-raw ini文件不再具有任何形式的eval魔力。
命令行选项
安装后,插件会将以下命令行标志添加到 pytest:
--tc-file=TESTCONFIG Configuration file to parse and pass to tests [PY_TEST_CONFIG_FILE] If this is specified multiple times, all files will be parsed. In all formats except python, previous contents are preserved and the configs are merged. --tc-format=TESTCONFIGFORMAT Test config file format, default is configparser ini format [PY_TEST_CONFIG_FILE_FORMAT] --tc=OVERRIDES Option:Value specific overrides. --tc-exact Optional: Do not explode periods in override keys to individual keys within the config dict, instead treat them as config[my.toplevel.key] ala sqlalchemy.url in pylons.
贡献
我们非常欢迎您的贡献。测试可以用tox运行,请确保 在提交请求之前,覆盖范围至少保持不变。
许可证
根据Apache Software License 2.0许可证的条款分发,“pytest testconfig”是免费的、开放的RCE软件
问题
如果您遇到任何问题,请file an issue连同详细说明。