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第三方库


热门话题
由ScheduledExecutorService触发的java同步线程   java如何兼容OpenJRE/JDK1.8。x与OracleJRE/jdk1.8。十、   可重用代码的静态最佳实践Java   TestsNG中有多个测试的java事务问题   排序为什么我的气泡排序不起作用?JAVA   JavaSpring与动态数据源   java如何在Mule Dataweave转换中使用正则表达式替换特殊字符?   java是否单独调用服务器以在jsp文件的img标记中呈现图像?   java基本语法,用于在函数中将扫描程序对象作为参数传递   java基于两列在Hibernate中填充外部集合   java安装eclipse时,我在文件夹中找不到jdk   kotlin Java 11`HttpClient`正在下载但未下载?(负内容长度)   文件Java无法读取Ö(特殊字符)并打印它   javars+Spring   java TestNg Selenide。没有webdriver绑定到当前线程   java我应该如何对数据库建模,以便数据库中的每个学生实体都有一个与每个课程实体相关的分数?   java GoogleAccountCredential getSelectedAccountName()在设置并实现权限后返回null   java从ngclick调用servlet中的函数   java NetBeans JTable不带滚动窗格,保留标题   java Drools从会话中获取相同类型的对象