【问题标题】:tox command to run all conditionalstox 命令运行所有条件
【发布时间】:2021-07-30 13:49:34
【问题描述】:

鉴于下面这个简化的 tox 文件,当我输入 tox 时,它会同时运行单元测试和功能(tox 条件)测试。

但是我希望测试不同的 python 版本(3.7、3.8、3.9 等),当我输入 tox -e py38 时,它不会运行单元和功能测试。

有没有办法配置 tox.ini,这样当我输入 tox -e py38 时,它会运行每个条件测试?

注意:tox -e py38-unit-functional 不是我要找的。我有一个隔离的 CI 环境,使用 tox -e py38 在项目中调用 tox 命令,当我添加/删除/更新新的 tox 条件时,我不想每次都更新 CI 脚本。有多个项目使用相同的 CI 脚本。每个项目都有不同的条件集,它们可能会发生变化。我希望能够告诉 tox 运行所有条件。

envlist =
    py3-{unit,functional}

[testenv]
basepython=python
whitelist_externals = make
commands =
    make clean
    unit: pytest unit
    functional: pytest functional

我在 tox 文档中找不到这样做的方法。我期待着您的回答。如果这对于 tox 是不可能的,那么知道它仍然会提供信息。 提前致谢

编辑(清晰): 一般来说,我想避免输入所有条件的名称,例如“单元”、“功能”、“接受”、“性能”等。任何其他允许我在不输入条件名称并允许我指定 python 版本(例如 py3.8)的情况下运行所有​​这些的解决方案都非常重要赞赏。

【问题讨论】:

    标签: python tox


    【解决方案1】:

    不带参数的独立tox 命令将始终运行envlist 中指定的所有环境 - 因此,如果您想使用此命令运行不同的 Python 版本,您需要指定它们:

    envlist = py{38,39}-{unit,functional}
    

    这通常是个好主意,因为您也可以使用 envlist 在 CI 中运行测试。

    如果您想手动选择多个 Python 版本,您可以在 -e 选项中添加更多内容,方法是用逗号分隔其他环境。

    tox -e py37-unit,py38-unit,py37-functional,py38-functional
    

    这个命令肯定不好打。

    P.S.:这并不完全是您问题的答案,但您应该考虑是否应该在 CI 中运行 tox 而不是 tox -e py38

    我将在明天的 PyOhio 上发表关于 how to setup CI with tox(以及其他)的演讲。

    【讨论】:

    • 感谢 Jürgen 提供的信息丰富的答案。我想为不同的 python 版本运行单独的 tox 命令的主要原因是能够并行运行它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 2019-07-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2016-03-17
    相关资源
    最近更新 更多