Приспособление pytest и тест оба зависят от другого приспособления - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть пара приборов для тестирования функции с входами xy.Один генерирует значения x, другой - значения y.Тест зависит от обоих.Значения y также зависят от значений x.Вот сводка настроек:

import pytest

@pytest.fixture(params=['a', 'b', 'c'])
def x_data(request):
    return request.param

@pytest.fixture(params=['1', '2', '3'])
def y_data(request, x_data):
    return request.param + x_data

def test_mathfunc(x_data, y_data):
    print(f'\nTesting {x_data} vs {y_data}', end='')

Когда я запускаю это с pytest -s, выполняется ровно 9 тестов, и распечатка в test_func показывает, что x_data передается вtest всегда совпадает с тем, который использовался для генерации y_data (что, разумеется, мне и нужно):

Testing a vs 1a.
Testing a vs 2a.
Testing a vs 3a.
Testing b vs 1b.
Testing b vs 2b.
Testing b vs 3b.
Testing c vs 1c.
Testing c vs 2c.
Testing c vs 3c.

Я осознаю тот факт, что pytest кэширует результаты фикстуры и пытаетсяОцените светильники минимально возможное количество раз.Для этого простого случая это будет означать, что поведение достаточно надежное.

Вопрос в том, могу ли я действительно полагаться на это поведение?Есть ли ситуация, в которой мне не хватает, когда тест может вызвать вызов, например, a, 3c?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...