所以,你想要的是有两套不同的环境中独立运行它们。
您首先必须了解的是,envlist
是如果在不使用-e
选项的情况下调用tox时将运行的所有环境的列表。
接下来你必须明白的是,每个tox.ini
只有一个这样的列表,其中一个在全球[tox]
部分。
你要了解的另一件事是,pyXX因素(因素是由-
号分隔环境名的部分)有TOX特殊的意义,因为他们指示其与特定构建环境翻译。它们也被称为“默认环境”(参见basic usage)。如果在调用tox时不要求这个因子,那么将使用basepython
解释器来构建virtualenv(您从中调用tox的解释器)。
所以如果你调用tox -e local
像你这样一个tox.ini,它将执行什么是[tox:local]
与basepython定义的,因为你不是确定哪些蟒蛇应该用来创造的virtualenv,所以它使用相同的解释你用tox调用tox。
如果你希望能够与其他环境与其他翻译援引当地因素,独立,下面可以让你开始(在v2 config docs描述):
[tox]
envlist = {py27,py35}-remote,{py31,py36}-local
[testenv]
deps =
Flask
connexion
pytest
coverage
pytest-cov
requests
six
[testenv:remote]
commands=pytest --junitxml xunit-reports/xunit-result-XXX.xml --cov {envsitepackagesdir} --cov-report=xml
[testenv:local]
commands= pytest --cov {envsitepackagesdir}/XXX --cov-report html
检查其ENVS这创造搭配:
$ tox -a
py27-remote
py35-remote
py31-local
py36-local
什么envlist用花括号符号呢,是与他们的排列结合所有因素(这可以有更多的尺寸也可以)创造环境名。
如果你说的tox没有-e
,他们将全部运行并且全部使用正确的解释器。
如果你想运行本地ENVS只有你将不得不与调用它:
$ tox -e py31-local,py36
那么只有他们两个会运行。这里要说的是,如果你想运行所有环境的一个子集,你必须要求他们的全名。没有“次世代”或额外的envlist魔法。只需在逗号分隔列表中列出envorenments的全名,您就是金牌。
UPDATE
TIL了解到,实际上你可以使用一代语法命令行,所以你可以键入:
$ tox -e 'py{31,36}'-local
谢谢@phd指点出来。