pytest的测试配置插件。

pytest-testconfig的Python项目详细描述


PyPI versionPython versionsSee Build Status on Travis CI

pytest的测试配置插件。

基于jesse noller的nose testconfig。由wojciech olejarz和bart_omiej skrobek为pytest重写。


这个pytest插件是用Cookiecutter@hackebrotcookiecutter-pytest-plugin模板生成的。

功能

pytest testconfig是pytest测试框架的插件,用于传递特定于测试(或特定于测试运行)的配置数据 执行的测试。

当前应支持以下格式的配置文件:

插件为{TT1}$为灵活,支持执行任意 python文件作为配置文件,无需检查。默认格式为 假定为configparser ini样式格式。

如果提供多个文件,则合并对象。以后的设置将 覆盖以前的那些。

该插件提供了一种覆盖命令中某些参数的方法 行(假设主“config”对象是dict)并且可以很容易地 添加了其他解析器。

可能未提供配置文件。在本例中,config对象是 emtpy dict.任何命令行“覆盖”参数都将添加到dict中。

要求

需要pytest>;=3.5.0

安装

您可以通过pipPyPI

安装“pytest testconfig”
$ python3 -m pip install pytest-testconfig

用法

测试可以从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连同详细说明。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么这个代码段不会产生结果?   在OSGi下使用SnakeYaml的java?   java可扩展列表视图能否移动自定义图标(指示器)?   java如何将文件从html保存为pdf   java如何将字符串转换为长字符串   java使用来自无限输入的原始数据并在设备上播放   通过spring数据使用复合PK集合的java查询(Hibernate JPA)   使用Sax解析器通过按钮单击java解析数据所有按钮返回相同的数据,而不是独占数据   JavaSWT:将shell切换到全屏模式   如果IsRechable抛出Java中的IOException,那么应该采取什么适当的操作?为什么?   java重定向到另一个带有@RequestBody的页面   密码学可以组织起来。弹跳船舱。openssl。PEMReader阅读java。安全私钥?   java MYSQL列中的空值要求为通配符   文件io如何将res文件夹链接到java项目