【问题标题】:Is it possible to run breadth first instead of depth first in tox?是否可以在 tox 中运行广度优先而不是深度优先?
【发布时间】:2023-03-24 15:37:01
【问题描述】:

我有一套小型测试总共需要大约 40 秒才能运行,而我有一套中型测试总共需要大约 40 分钟才能运行。

我希望订单运行如下:

  1. py27 小测试
  2. py37 小测试
  3. py27 中等测试
  4. py37 中等测试

相反,tox 像运行它一样

  1. py27 小测试
  2. py27 中等测试
  3. py37 小测试
  4. py37 中等测试

这样的问题是,如果一些简单的事情破坏了一个小测试,我想立即知道它。中等测试(如集成测试)是额外的安全层,可以排除更多问题,但需要更长的时间才能完成。

[tox]
envlist = py27,py37
[testenv:py27]
deps =
    pytest
    pytest-cov
    pytest-mock
    pylint
    ; packages specified by the setup.py cover the other dependencies for py2.7
commands =
    pytest -v --ignore-glob="*medium*" --doctest-modules
    pytest -v tests/medium_tests 

【问题讨论】:

    标签: python testing continuous-integration automated-tests tox


    【解决方案1】:

    我不是毒物专家,但这样的事情可能会有所帮助:

    [tox]
    envlist = {s,m}-{py27,py37}
    
    [testenv]
    deps =
        pytest
    commands =
        s: pytest -v -k 'not medium'
        m: pytest -v -k 'medium'
    

    你所有的短测试命令都应该有前缀s:,所有中等测试命令都应该有前缀m: 重要的是 env 列表 {s,m}-{py27,py37},它将依次通过 s-py27s-py37m-py27m-py37

    【讨论】:

    • 啊哈!这是我一直在寻找的答案。我看到我关于如何实际使用 tox 的心理模型有点偏离。我一直试图通过多个 testenv: 使其工作,但没有意识到这并不是真正的意图,而只是一种反模式,它可以用作执行其中一些操作的工具。这很清楚!谢谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多