如何导入tox中的所有环境变量

时间:2015-07-02 18:33:16

标签: python virtualenv setenv tox

我在setenv中使用以下命令从我运行的地方导入环境变量,但有没有办法导入所有变量,以便我不需要逐个导入。

e.g: {env:TEMPEST_CONFIG:}和{env:TEMPEST_CONFIG_DIR:}用于导入这两个变量。

[testenv:nosetests]
setenv =
    TEMPEST_CONFIG={env:TEMPEST_CONFIG:}
    TEMPEST_CONFIG_DIR={env:TEMPEST_CONFIG_DIR:}
deps = {[testenv]deps}
commands =
    find . -type f -name "*.pyc" -delete
    bash {toxinidir}/tools/setup.sh
    nosetests --with-xunit {posargs}

1 个答案:

答案 0 :(得分:28)

您可以使用passenv。如果您传递catch所有通配符*,则可以访问父环境中的所有环境变量:

  

passenv =空格分隔-GLOBNAMES

     

2.0版中的新功能。

     

应复制的通配符环境变量名称列表   从tox调用环境到测试环境时   执行测试命令。如果指定的环境变量没有   存在于tox调用环境中,它被忽略。您可以使用 *   和?使用一个名称匹配多个环境变量。

最小tox.ini来重现:

[tox]
envlist = py27
skipsdist = True

[testenv]
passenv = *
whitelist_externals = echo
commands = echo {env:MY_FANCY_ENV_VAR:} from my fancy env var :)

linux / unix shell中的调用:

MY_FANCY_ENV_VAR='hello' tox
Windows cmd.exe上的

调用:

set MY_FANCY_ENV_VAR=hello & tox

输出:

py27 create: /tmp/tt/.tox/py27
py27 installed: 
py27 runtests: PYTHONHASHSEED='2037875709'
py27 runtests: commands[0] | echo from my fancy env var :)
hello from my fancy env var :)
_______________________ summary __________________________
  py27: commands succeeded
  congratulations :)