定义夹具以及pytest_generate_tests

时间:2020-05-22 07:42:01

标签: python pytest

是否可以与pytest_generate_tests一起定义Fixture函数?

当我使用pytest_generate_tests实现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_generate_tests时运行。

我知道可以直接对灯具进行参数化。但是我也想要pytest_generate_tests,因为它正在生成9-10个夹具。因此,直接使用@pytest.fixture(params=[])参数化夹具似乎不是我的项目的选择。

1 个答案:

答案 0 :(得分:1)

解决了这个问题。

我只需要创建另一个装置。

因此,现在有2个灯具。

  1. 参数化测试用例
  2. 执行测试用例所需的设置

摘要:

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