我在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}
答案 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 :)