【问题标题】:Does python-xdist plugin causes pytest_generate_tests to execute multiple times?python-xdist 插件是否会导致 pytest_generate_tests 执行多次?
【发布时间】:2014-03-20 22:51:26
【问题描述】:

我有一个简单的测试。

def test_sample(str):
    print str

并使用 pytest_generate_tests() 例如

def pytest_generate_tests(metafunc):
    argnames = [str]
    argvalues = [[Hello], [World]]
    print "Entered pytest_generate_tests"
    metafunc.parametrize(argnames, argvalues)

现在,如果我使用 python-xdist 并行运行测试。我看到 pytest_generate_tests() 被称为“n”次取决于 cmdline 选项。

py.test -n 2 --> 打印两次“Entered pytest_generate_tests”。 这是正确的行为吗?我期待只有测试将在单独的线程中执行。

环境: 蟒蛇2.7 py.test 2.5.2 pytest-xdist 1.10

【问题讨论】:

    标签: python pytest


    【解决方案1】:

    是的,这是正确的...pytest_generate_tests 是 py.test 在收集阶段使用的钩子,每个从站依次执行该钩子以获得要执行的测试(“测试项”)。哪个从站执行哪个测试项,然后由启动测试会话的进程处理。

    我还没有完全研究所有内部结构,但我认为其中一个原因是您不能将测试项从一个进程发送到另一个进程,因为它们不可序列化。所以方法是让每个slave自己进行收集以获得测试项目及其“测试id”,然后可以在进程之间交换作为通信手段,哪个slave应该执行每个测试以及报告测试结果回来了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      • 2019-08-02
      • 2021-04-19
      相关资源
      最近更新 更多