运行符合给定因素的毒物测试

tox-factor的Python项目详细描述


毒性因子

CircleCIAppveyorcodecovversionpythonlicense

什么是毒性因子?

tox factor允许基于因子匹配运行tox测试环境的子集。

好吧,但是实际上是什么意思?

采用以下毒性配置:

[tox]envlist=    py{35,36,37}-django{20,21,22}-{redis,memcached}

上面基于三个因素组定义了18个测试环境-python 版本、django版本和缓存后端。虽然上面说的很有力, tox不提供基于这些因素子集运行构建的方法。 例如,运行所有Python3.7版本的调用将是:

$ tox -e py37-django20-redis,py37-django20-memcached,py37-django21-redis,py37-django21-memcached,py37-django22-redis,py37-django22-memcached

tox factor函数与-e <env name>参数类似,只是它运行 与给定因子匹配的所有环境。六个py37生成可以使用以下命令运行:

$ tox -f py37

除了在本地运行tox时易于使用外,这对于某些ci也是有用的 设置。例如,两种常见的tox-ci模式分别是:

  • 为每个毒物测试环境定义一个ci作业。例如,

    tox -e py37-django20-redis

  • 为运行多个测试环境的公共环境定义CI作业。例如,

    tox -e py37-django20-redis,py37-django20-memcached,...

对于后一种情况,这个插件简化了ci的维护,因为它可以 缩短为tox -f py37。另外,对以上内容进行以下更新 毒性配置:

[tox]envlist=    py{35,36,37}-django{20,21,22}-{redis,memcached}    py{36,37,38}-django{30}-{redis,memcached}

通过使用tox factor,不必更新python 3.7构建,因为 新的py37-django30-*环境将自动匹配。

验证匹配的测试环境

如果要验证实际运行的测试环境,请结合以下因素 与-l标志匹配。这将显示所有匹配的测试环境。例如,

$ tox -f py37 -l
py37-django20-redis
py37-django20-memcached
py37-django21-redis
py37-django21-memcached
py37-django22-redis
py37-django22-memcached

使用详细信息

factor选项接受逗号分隔的列表(类似于-e选项)。

$ tox -f py27,py37 -l
py27-django111
py37-django21

或者,可以通过TOXFACTOR环境变量提供因子:

$ TOXFACTOR=py27,py37 tox -l
py27-django111
py37-django21

因子也可以匹配非生成环境名称。例如,给定 以下毒物配置:

[tox]envlist=    py{35,36,37}-django20[testenv:list]

则以下内容将匹配:

$ tox -f py37,lint -l
py37-django20
lint

因子总是被给定的toxenv所取代。例如,毒性因子 在下列情况下为NOOP:

$ tox -f py37 -e py35-django21 -l
py35-django21

$ TOXENV=py35-django21 tox -f py37 -l
py35-django21

因子不支持部分匹配。tox -f py3py37不匹配。 然而,因素可能匹配不同的破折号分隔部分。假设如下:

[tox]envlist=    py{35,36,37}-django{20,21,22}-{redis,memcached}

然后tox -f py37-redis将匹配:

py37-django20-redis
py37-django21-redis
py37-django22-redis

释放过程

  • 更新更改日志
  • 在setup.py中更新包版本
  • 为版本创建git标记
  • 将版本上载到PYPI测试服务器
  • 将版本上载到正式的pypi服务器
$ pip install -U pip setuptools wheel twine
$ rm -rf dist/ build/
$ python setup.py sdist bdist_wheel
$ twine upload -r test dist/*
$ twine upload dist/*

谢谢

这段代码主要基于@ryanhiebert在tox-travis中所做的工作。 如果没有他的努力,写作和 测试这个包。

许可证

见:LICENSE

BSD 3条款许可证

版权所有(c)2019,Ryan P Kilby 保留所有权利。

以源和二进制形式重新分配和使用,有无 如果满足以下条件,则允许修改:

  • 重新发布源代码必须保留上述版权声明 条件列表和以下免责声明。

  • 二进制形式的再分配必须复制上述版权声明, 文件中的条件列表和以下免责声明 和/或分发时提供的其他材料。

  • 无论是版权所有者的名字还是 贡献者可用于支持或推广来自 本软件未经事先书面许可。

本软件由版权所有者和贡献者“按原样”提供。 以及任何明示或默示保证,包括但不限于 默示保证适销性和特定用途的保证 否认。无论如何一著作权人或者贡献者应当承担责任 任何直接的,间接的,偶然的,特殊的,例子的,或结果的 数据(包括但不限于采购或替代货物或 服务;损失或使用、数据或利润;或营业中断) 根据任何责任理论,无论是在合同中,严格责任, 或因使用而引起的侵权行为(包括疏忽或其他) 或者这个软件,即使被告知或者有可能或者这样的损坏。

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

推荐PyPI第三方库


热门话题
java Spring安全编程授权   java Android库AAR取决于另一个库   Java/Groovy双精度语句问题   爪哇。查看安卓监视器图形时,release()不会减少我的内存   java无法在子类中使用EventFiringWebDriver对象   java第一个if语句始终为true,但第二个if语句不为true   java如何从作为字符串提供的XML源代码创建可绘制(或XmlResourceParser对象)?   多线程Java并发问题锁和同步方法   java Android Studio注册链接   java ArrayList of ArrayList of String   使用Shadow重新定位的包中的java Kotlin属性不起作用   java在接口org上找不到方法。阿帕奇。伊巴蒂斯。遗嘱执行人。陈述名为prepare的语句处理程序   如何在Java中放大2倍?   java当参数作为RequestBody和RequestParam发送时,sprig控制器无法识别发送的请求