这是我的毒性试验公司名称:
[tox]
envlist = py27,py35
[testenv]
deps =
Flask
connexion
pytest
coverage
pytest-cov
requests
six
commands=pytest --junitxml xunit-reports/xunit-result-XXX.xml --cov {envsitepackagesdir} --cov-report=xml
[testenv:local]
#HOW DO I SPECIFY A NEW LIST OF PYENV LIKE 31,36 IN HERE????
commands=
pytest --cov {envsitepackagesdir}/XXX --cov-report html
当我运行tox
时,它在py27
和{tox -e local
在一组不同的多python环境中运行。我不知道怎么做。我该怎么做?现在它甚至不尊重最初的envlist,只在python2.7上运行。在
[tox]envlist
只是一个默认值-在没有选项-e
和没有TOXENV
环境变量的情况下调用tox
时要运行的环境列表。一旦使用tox -e
,则忽略[tox]envlist
。在您可以使用不同的python版本运行
local
环境,但我不知道如何多次运行它。必须明确列出所有环境:您可以使用tox的约定缩短命令行:
^{pr2}$一个可能的解决方案是使用
tox -l
列出所有环境,过滤您想要的环境,然后将它们反馈到tox -e
。在例如,要运行名称中有“local”的所有环境(使用bash):
tox -e $(tox -l | grep local | paste -sd "," -)
分步讲解:
tox -l
列出所有环境,每行一个grep local
只过滤包含单词“local”的输入行paste -sd "," -
用逗号连接输入行你想要的是两个不同的环境。在
首先要了解的是,
envlist
是一个列表,列出了如果不使用-e
选项调用tox,将运行的所有环境。在接下来你要了解的是,每个
tox.ini
只有一个列表,而这个列表在global[tox]
部分中。在另一件你必须理解的事情是pyXX factors(factors是由
-
符号分隔的环境名称的部分)对tox有特殊的含义,因为它们指示tox用一个特定的解释器构建一个环境。它们也被称为“默认环境”(参见basic usage)。如果您在调用tox时没有要求这个因子,那么basepython
解释器将用于构建virtualenv(您从中调用tox的解释器)。在因此,如果您使用毒性试验与您的一样,它将使用basepython执行
[tox:local]
中定义的内容,因为您没有定义应该使用哪个python来创建virtualenv,因此它使用的解释器与您调用tox时使用的相同。在如果您希望能够使用其他解释器(独立于其他环境)调用本地因子,那么可以从以下几点开始(在v2 config docs中描述):
检查创建的环境:
^{pr2}$使用大括号表示法的envlist所做的,是通过将所有因素与其排列组合在一起来创建环境名称(这也可以有更多的维度)。在
如果您不使用
-e
说出tox,它们将全部运行并使用正确的解释器。在如果只想运行本地env,则必须使用以下命令调用它:
那么只有那两个会跑。这里要做的是,如果您想运行所有环境的子集,您必须要求它们具有它们的全名。没有“子代”或额外的环境魔法。只需在逗号分隔的列表中列出环境的全名,你就是黄金。在
更新
TIL了解到实际上可以从命令行使用生成语法,因此可以键入:
谢谢你指出它。在
相关问题 更多 >
编程相关推荐