如何在pytest中使用具有不同数据结构的不同夹具进行一次测试?

时间:2015-07-07 18:38:40

标签: python pytest

我有一个测试,目前使用覆盖整个测试夹具子集的烟雾测试夹具。对于我测试的一部分,我想在我的测试中使用烟雾测试夹具,但是如果我想做一个大测试我想使用一个使用不同数据的完整测试夹具结构(在下面的例子中,small使用元组,big使用列表)。目前我使用如下所示的一个夹具进行测试,并且我无法确定如何在具有不同数据结构的夹具之间进行交换。

import pytest

@pytest.fixture(params=[
    (1, 1),
    (2, 2)
])
def small_fixture_of_numbers(request):
    # returns a list of pairs of numbers for smoke testing
    return request.param

@pytest.fixture(params=[
    1, 2, 3, 4
])
def big_fixture_of_numbers(request):
    # returns the full list of numbers for full-scale testing
    return request.param

def test_addition(small_fixture_of_numbers):
    (x, y) = small_fixture_of_numbers
    total = x + y
    assert total > 2

1 个答案:

答案 0 :(得分:1)

以不同方式运行相同的测试是不明智的。如果不同的运行由不同的数据结构支持,那就更不用了。

测试用例的整体思想是,它为每次在相同条件下运行的代码提供了稳定的环境。测试和夹具应该是固定的合作伙伴,因此代码行为的变化是唯一的因素。

换句话说,您似乎需要两种不同的测试。您的选择应该是运行什么测试,而不是如何运行它。