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

33

我在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}
1个回答

59
你可以使用 passenv。如果你传递通配符*,你就可以访问父级环境中的所有环境变量:

passenv=SPACE-SEPARATED-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:}!')"

在 Linux/Unix Shell 中的调用:

MY_FANCY_ENV_VAR=no tox -qq

在 Windows 的 cmd.exe 上调用:

set MY_FANCY_ENV_VAR=no & tox -qq

输出:

computer says no!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接