【发布时间】:2020-03-19 12:45:07
【问题描述】:
我需要能够调用标记环境(由于 CICD 设置不仅调用 tox 而是调用 tox -e tag1,tag2,...),但我希望该环境使用多个 python 版本。我想要这样的东西:
[tox]
envlist = mytag
[testenv:mytag]
deps=
pytest
coverage
pytest-cov
python_versions = py37, py38 // I KNOW THIS IS NOT RIGHT
commands=
pytest ...
我目前知道如何做到这一点的唯一方法如下所示(调用tox -e mytag37,mytag38,但随着新版本的添加,这很难扩展)
[tox]
envlist = mytag37, mytag38
[testenv:mytag37]
basepython=python37 // see
deps=
pytest
coverage
pytest-cov
commands=
pytest ...
[testenv:mytag38]
basepython=python38 // see
deps=
pytest
coverage
pytest-cov
commands=
pytest ...
有没有更简洁的方法来实现这一点?
【问题讨论】:
-
您可以生成带有 bash 扩展的环境,例如
envlist = {py36,py37}-mytag将为您生成两个环境,py36-mytag和py37-mytag。如果你想为单个 env 声明多个解释器,这是不可能的 - 每个 env 都使用自己的解释器。 -
您是否有理由不使用默认的
[testenv]部分,我错过了什么吗? -
可以用
-e something之类的标签调用testenv吗?另有说明,请阅读我帖子的第一句话。我认为something必须是冒号后的标签,例如testenv:something。 -
@hoefling 听起来你写的东西完全符合我的需要?基本上,能够从第一个问题中生成第二个代码块吗?如果您将其发布为答案,我将尝试接受!
标签: python-3.x pytest tox