如何使用进行设置和拆卸的夹具迭代 Pytest 测试

时间:2021-07-14 06:35:57

标签: pytest fixtures

我对 pytest 很陌生。

有一个 test_conf 目录,里面有几个测试配置文件。

  • test_conf
    
  •         test_conf1
    
  •         test_conf2
    

这是我的测试函数。

conf_files 函数从该目录中获取所有 test_conf 文件并返回一个列表。

@pytest.mark.parametrize('test_conf', conf_files())
def test_performance_scenario_1(fixture1, test_conf):
    do_some_thing(test_conf)

fixture1 会为此测试进行设置和拆卸。

我的建议是针对 test_conf 中的每个测试 conf 文件,我们运行 test 函数对其进行一些测试。

我的问题是如何将 test_conf 的每个元素传递给 fixture1,因为我需要在需要 test conf 文件的 fixture1 设置步骤中进行一些初始化。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找的是 parameterised fixtures。因此,不是将 conf 文件传递​​给您的测试,而是将其传递给夹具,后者使用特定的 conf 文件进行设置/拆卸。

您的 fixture1 的定义:

@pytest.fixture(scope="module", params=conf_files())
def fixture1(request):
    # The pytest fixture `request` gives you access to the params defined in the annotation.
    conf_file = request.param
    # setup / teardown logic
    ...

那么在你的测试中,只要通过fixture就足够了:

def test_performance_scenario_1(fixture1):
    # do_some_things