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

Man*_*agi 21 python virtualenv setenv tox

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

例如:{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}
Run Code Online (Sandbox Code Playgroud)

Oli*_*ter 33

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

passenv =空格分隔-GLOBNAMES

2.0版中的新功能.

通配符环境变量名称列表,在执行测试命令时应从tox调用环境复制到测试环境.如果tox调用环境中不存在指定的环境变量,则忽略该变量.你可以使用*和?使用一个名称匹配多个环境变量.

最小化tox.ini重现:

[tox]
skipsdist = True

[testenv]
passenv = *
skip_install = True
commands = python -c "print('computer says {env:MY_FANCY_ENV_VAR:}!')"
Run Code Online (Sandbox Code Playgroud)

在linux/unix shell中调用:

MY_FANCY_ENV_VAR=no tox -qq
Run Code Online (Sandbox Code Playgroud)

Windows cmd.exe上的调用:

set MY_FANCY_ENV_VAR=no & tox -qq
Run Code Online (Sandbox Code Playgroud)

输出:

computer says no!
Run Code Online (Sandbox Code Playgroud)