微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

tox 命令运行所有条件

如何解决tox 命令运行所有条件

鉴于下面这个简化的 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 来说是不可能的,那么了解它仍然是有益的。 提前致谢

编辑(清晰): 一般来说,我想避免输入所有条件的名称,例如“unit”、“functional”、“acceptance”、“performance”等。任何其他允许我在不输入条件名称的情况下运行所有​​这些并且使我能够指定 python 版本(例如 py3.8)的解决方案非常多赞赏。

解决方法

不带参数的独立 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(以及其他)的演讲。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。