nose-testconfig 测试配置插件。
项目描述
关于
由Jesse Noller编写,许可协议Apache Software License,2.0
您可以使用以下命令安装它:pip install nose-testconfig
它做什么
nose-testconfig 是一个nose测试框架的插件,它允许将特定于测试(或测试运行)的配置数据传递给正在执行的测试。
目前支持的配置文件格式如下
YAML(通过PyYAML)
INI(通过ConfigParser)
纯Python(通过Exec)
JSON(通过JSON)
该插件旨在具有灵活性,因此支持执行任意Python文件作为配置文件,而不进行检查。默认格式假定为ConfigParser ini风格格式。
如果提供了多个文件,则将合并对象。较晚的设置将覆盖较早的设置。
该插件提供了一种从命令行覆盖某些参数的方法(假设主“config”对象是字典),并且可以轻松地向其中添加额外的解析器。
可能不提供配置文件。在这种情况下,配置对象是一个空字典。任何命令行“覆盖”参数都将添加到该字典中。
测试用法
目前(直到有更好的东西出现),测试可以从testconfig导入“config”单例。
from testconfig import config
默认情况下,YAML文件解析为嵌套字典,ConfigParser ini文件也折叠成嵌套字典,以便通过foo[bar][baz]样式访问。测试可以通过引用相关的字典键访问配置数据。
from testconfig import config def test_foo(): target_server_ip = config['servers']['webapp_ip']
警告:鉴于这只是一个字典单例,测试可以轻松写入配置。这意味着您的测试可以写入配置空间并可能更改它。这也意味着对配置的线程访问可能很有趣。
当使用纯Python配置时——显然是“天高任鸟飞”——因为配置是通过exec加载的,您可能可以修改nose、插件等。但是,如果您在Python代码中没有导出config{}字典,显然您无法从testconfig导入配置对象。
当使用YAML风格配置时,您获得了纯Python的大部分功能,而没有未经保护的exec()的危险——您显然可以使用pyaml Python特定的对象和所有其他YAML美味的东西。
定义配置文件
简单的ConfigParser风格
[myapp_servers] main_server = 10.1.1.1 secondary_server = 10.1.1.2
因此,您的测试可以像这样访问配置选项
from testconfig import config def test_foo(): main_server = config['myapp_servers']['main_server']
- YAML风格配置:
- myapp
- servers
main_server: 10.1.1.1 secondary_server: 10.1.1.2
您的测试可以这样访问它
from 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 testconfig import config def test_foo(): main_server = config['main_server']
如果您需要在配置中放入Python代码,您可以使用python-config文件功能,或者需要在PyYAML/YAML中使用!!python标签 - 原始ini文件不再有任何eval魔法。
命令行选项
安装后,插件将为nosetests添加以下命令行标志
--tc-file=TESTCONFIG Configuration file to parse and pass to tests [NOSE_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 [NOSE_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.
传递INI配置文件
$ nosetests -s --tc-file example_cfg.ini
传递YAML配置文件
$ nosetests -s --tc-file example_cfg.yaml --tc-format yaml
传递Python配置文件
$ nosetests -s --tc-file example_cfg.py --tc-format python
传递多个INI配置文件
$ nosetests -s --tc-file example_cfg.ini --tc-file example_cfg2.ini
在命令行上覆盖配置值
$ nosetests -s --tc-file example_cfg.ini --tc=myvalue.sub:bar
在未指定配置文件的情况下传递参数
$ nosetests -s --tc=myvalue.sub2:baz
覆盖多个键:值对
$ nosetests -s --tc-file example_cfg.ini --tc=myvalue.sub:bar \ --tc=myvalue.sub2:baz --tc=myvalue.sub3:bar3
警告:当使用–tc=标志时,您可以多次传递它以覆盖所需的关键字/值。格式为parent.child.child = value - 点被转换成配置字典中的键,例如
myvalue.sub2:baz = config[myvalue][sub2] = baz
您可以通过在命令行上传递–tc-exact参数来覆盖点的爆炸。
特殊环境变量
如果您有一个执行以下导入的测试
from testconfig import config
那么您知道您不能通过像pychecker这样的工具运行您的测试,因为pychecker会执行您正在扫描的文件,并抛出警告,任何使用config字典的操作都会引发异常。
为了解决这个问题,我添加了四个环境变量检查,如果设置这些变量,则会导致将指定的配置文件自动加载到模块中,并填充配置字典。这些是:
NOSE_TESTCONFIG_AUTOLOAD_YAML NOSE_TESTCONFIG_AUTOLOAD_INI NOSE_TESTCONFIG_AUTOLOAD_PYTHON NOSE_TESTCONFIG_AUTOLOAD_JSON
将这些中的一个设置为您的环境/编辑器/等中的目标配置文件的完整路径,将使该配置文件自动加载。现在您可以运行pychecker了。大获成功!
例如,我在textmate中将NOSE_TESTCONFIG_AUTOLOAD_YAML设置为/Users/jesse/foo.yaml。现在我可以通过控制-shift-v使用pychecker,效果很好。
变更与新闻
- 0.10:
支持多个配置文件
- 0.9.1:
使用pypy和py34更新tox
使用分类器广告nose-testconfig与py2和py3兼容
- 0.9:
Python 3兼容
修复在指定环境变量NOSE_TESTCONFIG_AUTOLOAD_*时加载数据文件的问题。
添加测试
- 0.8:
对配置文件提供Unicode支持(gjednaszewski/dhellmann)
允许用户参数中使用冒号,例如 –tc url:127.0.0.1:5000(aconrad)
配置文件不再是必需的,–tc选项可以单独提供(aconrad)
- 0.7:
添加处理json格式的能力。
- 0.6:
添加检查与支持配置文件类型对应的3个不同环境变量的功能。将这些中的一个设置为给定配置文件的完整路径将强制nose-testconfig自动加载该文件。如果您想通过pychecker(或从命令行运行)运行导入testconfig模块的测试,这很方便。
- 0.5:
修复了Christopher Hesse报告的python配置文件解析中的错误
- 0.4:
根据Kumar和其他人的反馈,已经删除了ini文件值的eval():在值中允许任意python比标准更重要。
添加了–tc-exact命令行标志,以阻止将name.name值展开为dict-within-dicts
更新文档以便正确解析
- 0.3:
根据Kumar的反馈修复文档示例
- 0.2:
修复pypi打包问题
- 0.1:
初始发布。可能包含一些玻璃碎片。
项目详情
nose-testconfig-0.10.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 54328a20ee8e8f877ba31af9ba76f29aa8254581b0ba57d8e306f37b8e1a94c8 |
|
MD5 | 2ff0a26ca9eab962940fa9b1b8e97995 |
|
BLAKE2b-256 | a01a9bb934f1274715083cfe8139d7af6fa78ca5437707781a1dcc39a21697b4 |