У меня есть несколько функций, которые raise ValueError
для тестирования. Пока что мое решение:
import pytest
import record
@pytest.fixture(name='raised')
def is_value_error_raised(func, args):
try:
func(*args)
return True
except ValueError:
return False
@pytest.mark.parametrize(('func', 'args', 'expected'),
((record.check_length, ('Test', 1, 100), True),
(record.check_length, ('', 1, 100), False),
))
def test_length_check(raised, expected):
assert raised == expected
@pytest.mark.parametrize(('func', 'args', 'expected'),
((record.check_lang_code, ['EN'], True),
(record.check_lang_code, ['Test'], False),
))
def test_lang_check(raised, expected):
assert raised == expected
, но в этом подходе я повторяю имя функции в каждом тестовом примере. Я пытаюсь избавиться от этого. Мне было интересно, возможно ли сделать что-то похожее на:
@pytest.mark.parametrize(('func', record.check_lang_code))
@pytest.mark.parametrize(('args', 'expected'),
((['EN'], True),
(['Test'], False),
))
def test_lang_check(raised, expected):
assert raised == expected
Это производит ValueError
. Есть ли способ использовать два маркера параметризации, работающих друг с другом? Если нет, как я могу исправить этот код?