У меня есть два одинаковых тестовых случая, в каждом из которых более 100 строк кода, которые создают вспомогательные объекты для теста, эти строки очень похожи, на самом деле, только две строки отличаются между настройками теста, и я не хочу избавляться повторения кода. Я думаю, что множественная параметризация может помочь мне с этой задачей. Используя множественную параметризацию, я могу объединить настройки в одну и фактически обеспечить лучшие условия для теста. Булочка Я не могу обернуть голову, что является лучшим способом для определения ожидаемого результата при использовании множественной параметризации, когда каждая комбинация даст разные результаты?
Рассмотрим этот тестовый пример
@pytest.mark.parametrize('country', ['US', 'DE', 'FR', 'IT'])
@pytest.mark.parametrize('number', ['12345', '54321'])
def test_correct_record_is_selected_for_number(country, number):
# 100 line long setup of different objects.
record = get_record(country, number)
assert record = expected_record
Я ожидаю, что для различных комбинаций (country, number)
get_record
функция будет возвращать разные результаты, и я вижу единственный способ обеспечить ожидаемый результат - это переопределить часть функции get_record
logi c в самом тесте, чтобы определить, какой результат ожидать на основе предоставленных country
и number
, что мне не кажется правильным.
Есть ли способ красиво указать ожидаемый вывод для сложенных parametrize
декораторов? Или мне лучше перенести код настройки на несколько разных приборов и оставить его в виде 2 отдельных тестов, в которых используются разные приборы?