Python 在tox中是否可以使用广度优先而不是深度优先?

Python 在tox中是否可以使用广度优先而不是深度优先?,python,testing,continuous-integration,automated-tests,tox,Python,Testing,Continuous Integration,Automated Tests,Tox,我有一套小测试,总共运行大约40秒,我有一套中等测试,总共运行大约40分钟 我希望订单能像这样运行: py27小测试 py37小型测试 py27中试 py37中试 相反,tox像这样运行 py27小测试 py27中试 py37小型测试 py37中试 问题是,如果某个简单的东西破坏了一个小测试,我想马上知道。中间测试(如集成测试)是一个额外的安全层,可以找出更多问题,但运行时间要长得多 [tox] envlist = py27,py37 [testenv:py27] deps = pyte

我有一套小测试,总共运行大约40秒,我有一套中等测试,总共运行大约40分钟

我希望订单能像这样运行:

  • py27小测试
  • py37小型测试
  • py27中试
  • py37中试
  • 相反,tox像这样运行

  • py27小测试
  • py27中试
  • py37小型测试
  • 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 
    

    我不是毒物专家,但类似这样的东西可能会有所帮助:

    [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-py27
    s-py37
    m-py27
    m-py37

    Aha!这就是我一直在寻找的答案。我看到我的心理模型有点偏离了如何实际使用tox。我一直试图通过多个testenv:,使它工作,但没有意识到这不是真正的意图,只是一个反模式,它可以作为一个工具来做一些。这是非常清楚的!谢谢