跳转到主要内容

nose-testconfig 测试配置插件。

项目描述

关于

由Jesse Noller编写,许可协议Apache Software License,2.0

您可以使用以下命令安装它:pip install nose-testconfig

它做什么

nose-testconfig 是一个nose测试框架的插件,它允许将特定于测试(或测试运行)的配置数据传递给正在执行的测试。

目前支持的配置文件格式如下

该插件旨在具有灵活性,因此支持执行任意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 (9.4 KB 查看哈希值

上传时间:

构建分布

nose_testconfig-0.10-py2.py3-none-any.whl (11.3 KB 查看哈希值

上传时间: Python 2 Python 3

由以下支持