3

我发现为此我可以使用 PyTest 函数 pytest_load_initial_conftests()

https://docs.pytest.org/en/latest/example/simple.html#dynamically-adding-command-line-options

但我无法正确实现这个例子(见链接)。

pytest_load_initial_conftests()甚至没有启动(通过调试查看)。测试运行正常,没有任何参数(一个线程),但我期望“-n”参数。

我安装了 pytest 和 xdist。项目中只有两个文件。没有pytest.ini。

我究竟做错了什么?请帮助运行它。

conftest.py

import pytest
import os
import sys


def pytest_addoption(parser):
    parser.addoption('--some_param', action='store', help='some_param', default='')


def pytest_configure(config):
    some_param = config.getoption('--some_param')


def pytest_load_initial_conftests(args):
    if "xdist" in sys.modules:
        import multiprocessing
        num = max(multiprocessing.cpu_count() / 2, 1)
        args[:] = ["-n", str(num)] + args

test_t1.py

import inspect
from time import sleep
import os
import pytest


class Test_Run:

    def test_1(self):
        body()

    def test_2(self):
        body()

    def test_3(self):
        body()

    def test_4(self):
        body()

    def setup(self):
        pass

    def teardown(self):
        pass


def body():
    sleep(5)
4

1 回答 1

1

根据以下文档pytest_load_initial_conftests

注意:这个钩子不会为 conftest.py 文件调用,只为 setuptools 插件调用。

https://docs.pytest.org/en/latest/reference/reference.html#pytest.hookspec.pytest_load_initial_conftests

可能不应该在您找到的那个页面上提及它。

编辑:更新文档网址

于 2018-11-30T12:24:34.273 回答