我发现我可以使用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)
-n auto
的作用吗? - JoseKilosys.modules
中出现之前,您可能需要导入xdist
。您可以使用try: import xdist except ImportError: pass
,以便在未安装时不会因导入而停止执行。 - JoseKilo