Python 定义夹具以及pytest_生成_测试

Python 定义夹具以及pytest_生成_测试,python,pytest,Python,Pytest,有没有一种方法可以定义一个Fixture函数以及pytest\u generate\u测试 当我用pytest_generate_测试实现fixture时,fixture没有被执行 import pytest import time @pytest.fixture def splunk_searchtime(): time.sleep(5) print("Wow okay") def pytest_generate_tests(metafunc): """

有没有一种方法可以定义一个Fixture函数以及pytest\u generate\u测试

当我用pytest_generate_测试实现fixture时,fixture没有被执行

import pytest 
import time 

@pytest.fixture
def splunk_searchtime():
    time.sleep(5)
    print("Wow okay")

def pytest_generate_tests(metafunc):
    """
    Parse the fixture dynamically.
    """
    for fixture in metafunc.fixturenames:
        if fixture.startswith("splunk_searchtime"):
            metafunc.parametrize(fixture, [1,2,3])


def test_one(splunk_searchtime):
    pass

def test_two(splunk_searchtime):
    pass

它只在我注释pytest\u generate\u测试时运行

我知道夹具可以直接参数化。但是我也希望pytest_生成_测试,因为有9-10个fixture是用它生成的。因此,直接使用@pytest.fixtureparams=[]参数化fixture似乎不是我的项目的选项

解决了这个问题

我只需要创建另一个固定装置

所以现在有两个固定装置

参数化测试用例 执行测试用例所需的设置 片段:

import pytest 
import time 

@pytest.fixture
def splunk_searchtime(param_fixture):
    time.sleep(param_fixture)
    print("Wow okay")

def pytest_generate_tests(metafunc):
    global splunk_searchtime
    """
    Parse the fixture dynamically.
    """
    # global splunk_searchtime
    for fixture in metafunc.fixturenames:
        if fixture.startswith("param_fixture"):
            metafunc.parametrize("param_fixture", [1,2,3, 4])

def test_one(splunk_searchtime):
    pass

def test_two(splunk_searchtime):
    pass