PyTest - 运行 每个测试作为一个 Mutlitprocessing 进程

PyTest - Run each Test as a Mutlitprocessing Process

我正在使用 pytest 运行 我的测试,并测试我的网络应用程序。我的测试文件看起来像

def test_logins():
    # do stuff

def test_signups():
    # do stuff

def testing_posting():
    # do stuff

大约有20个,其中很多都有运行固定时间或依赖外部HTTP请求的元素,所以如果我这样做似乎会大大提高测试速度可以让 pytest 启动 20 个不同的 mutliprocessing 进程(每个测试一个)到 运行 每个测试功能。这可能/合理/推荐吗?

我调查了 xdist 但拆分测试,以便它们 运行 基于我计算机上的核心数量并不是我想要的。

此外,如果它是相关的,大部分测试都是使用 python 的请求库完成的(尽管它们最终将移至 selenium)

我仍然建议使用 pytest-xdist。而且,正如您已经提到的,因为您的测试主要进行网络 IO,所以可以使用比您拥有的内核(例如 20 个)更多的并行进程启动 pytest,这仍然是有益的,因为 GIL 不会阻止加速并行化。

所以你运行喜欢:

py.test tests -n<number>

xdist 的额外好处是您可以毫不费力地轻松扩展测试 运行 多台机器。 为了更轻松地在多台机器之间进行扩展,pytest-cloud 可以提供很多帮助。