基本原理
对于复杂的依赖矩阵,tox testenv名称模式最终成为如下所示的列表
py37-pytest5-framework1
py37-pytest5-framework2
py37-pytest6-framework1
py37-pytest6-framework2
py38-pytest5-framework1
py38-pytest5-framework2
py38-pytest6-framework1
py38-pytest6-framework2
...
py310-pytest6-framework2虽然内部tox.ini语法允许使用名称片段配置许多东西,例如
[testenv]
basepython =
py37: python3.7
py38: python3.8
py39: python3.9
py310: python3.10
deps =
pytest5: pytest ~= 5.0
pytest6: pytest ~= 6.0
framework1: framework ~= 1.0
framework2: framework ~= 2.0
setenv =
framework2: FOO=bar我发现在运行与名称片段匹配的所有testenv(如tox -e py39或tox -e framework2 )时,无法告诉tox。
问题
主要的缺点是,大多数CI测试作业最终都会被python版本隔离,所以您最终编写的指令如下
tox -e $PY-pytest5-framework1,$PY-pytest5-framework2,$PY-pytest6-framework1,$PY-pytest6-framework2但是,CI作业定义耦合到毒物检验矩阵,因为它必须知道:
这是很难维护的。
不完全解决办法
一个简单的解决方法就是简单地运行tox --skip-missing-interpreters,但缺点是:
问题
我是不是缺少了一些开箱即用的机制来过滤要运行的testenv,这个片段使我能够编写与毒性依赖矩阵无关的CI作业?我指的是像tox -e '*-framework2'这样的东西。
我是否必须使用shell技巧过滤和聚合tox --listenvs的输出?
发布于 2022-02-02 12:46:53
您可以将TOX_SKIP_ENV的regex模式否定如下:
$ env TOX_SKIP_ENV='.*[^-framework2]$' toxtox4将在未来几个月内推出,它引入了标签。虽然这可能不是对您的问题的直接帮助,但也许您可以找到一种简化tox.ini的方法。
https://stackoverflow.com/questions/70955457
复制相似问题