运行匹配给定因子的tox测试环境
项目描述
tox-factor
什么是tox-factor?
tox-factor可以根据因子的匹配来运行tox测试环境的子集。
好吧,但这实际上是什么意思?
以下是一个tox配置示例:
[tox]
envlist =
py{35,36,37}-django{20,21,22}-{redis,memcached}
上述定义了18个测试环境,基于三个因子组 - Python版本、Django版本和缓存后端。虽然上述功能强大,但tox不提供根据这些因子的子集运行构建的方法。例如,运行所有Python 3.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模式是
-
为每个tox测试环境定义一个CI作业。例如:
tox -e py37-django20-redis
-
为运行多个测试环境的公共环境定义一个CI作业。例如:
tox -e py37-django20-redis,py37-django20-memcached,...
对于后一种情况,此插件简化了CI的维护,可以缩短为tox -f py37
。此外,以下是上述tox配置的以下更新:
[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
用法详情
因素选项接受逗号分隔的列表(类似于-e
选项)。
$ tox -f py27,py37 -l
py27-django111
py37-django21
或者,可以通过TOXFACTOR
环境变量提供因素
$ TOXFACTOR=py27,py37 tox -l
py27-django111
py37-django21
因素也可以匹配非生成型环境名称。例如,给定以下tox配置
[tox]
envlist =
py{35,36,37}-django20
[testenv:list]
以下将匹配
$ tox -f py37,lint -l
py37-django20
lint
因素总是被给定的toxenv
覆盖。例如,在以下情况下,tox-factor不会执行任何操作
$ tox -f py37 -e py35-django21 -l
py35-django21
$ TOXENV=py35-django21 tox -f py37 -l
py35-django21
因素不支持部分匹配。tox -f py3
不会匹配py37
。然而,因素可以匹配不同的短划线分隔部分。给定以下
[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-Clause License
版权所有(c)2019,Ryan P Kilby。保留所有权利。
在不违反以下条件的情况下,允许以源代码和二进制形式重新分发和使用,无论是否修改
-
源代码重新分发必须保留上述版权声明、本条件列表和以下免责声明。
-
二进制形式的重新分发必须在文档和/或其他随分发提供的材料中复制上述版权声明、本条件列表和以下免责声明。
-
未经事先书面许可,不得使用版权所有者或其贡献者的姓名来认可或推广由此软件衍生出的产品。
本软件由版权所有者和贡献者提供,“按原样”以及任何明示或暗示的保证,包括但不限于对适销性和针对特定目的的适用性的暗示保证均予以否认。在任何情况下,版权所有者或贡献者均不对任何直接、间接、偶然、特殊、示范性或后果性的损害(包括但不限于替代商品或服务的采购;使用、数据或利润的丧失;或业务中断)承担责任,无论此类损害是否因使用本软件或因对本软件的使用可能性而引起,即使已通知此类损害的可能性。