如何使用类运行带有额外函数调用的所有 pytest 测试

时间:2021-03-25 07:19:50

标签: python pytest python-unittest

我有一个名为 BaseTest 的基类,我的所有测试用例都继承自它。

每个测试用例有 X 个测试和一个方法 - different_configuration()

而不是为每个测试创建 test_xyz 和 test_xyz_different(这意味着我在代码中的测试加倍,如果我有 x 个不同的配置,甚至更多)

有没有办法让基类有一些东西,甚至是一个固定装置,每个现有的测试都会创建/运行另一个测试,但会在开始时调用 self.different_configuration()。

额外信息 - 我有一个 dict 作为具有配置的属性,并且有一个配置,对于每个测试,我想测试两个可用选项。

self.different_configuration() 只是在测试本身之前更改配置值。

插图 -

    def test_x(self):
        self.run_and_verify()

    def test_x_different_configuration(self):
        self.different_configurations()
        self.run_and_verify()

因此对于每个现有测试,我在开始时使用此函数调用创建另一个测试,难道没有更简洁的方法来实现它吗?

1 个答案:

答案 0 :(得分:1)

你可以parametrize a fixture

不过,您必须将配置值从字典中提取到列表中,才能在 params 参数上使用它。

import pytest

@pytest.fixture(scope="module", params=[config1, config2])
def different_configuration(request):
    return request.param

然后,在您的测试中,您可以以某种方式使用每个配置值来根据需要更改配置:

def test_x(self, different_configuration):
    self.different_configurations(different_configuration)
    self.run_and_verify()

或者类似的东西。