Pytest тестирует исключение KeyError при использовании параметризации - PullRequest
1 голос
/ 13 марта 2020

Я использую функциональность @pytest.mark.parametrize для тестирования нескольких тестовых случаев с использованием pytest. Теперь мне трудно понять, как мне проверить, выдает ли моя функция KeyError по умолчанию, как мне написать для нее тест?

В приведенном ниже примере transcript и category являются двумя входными параметрами. category является ключом.

@pytest.mark.parametrize("transcript, category, category_naming_score", [
    ("orange banana apple", "fruits", 3),
    ("carrot celery spinach", "vegetables", 3),
    ("birds cardinals blackbirds crows", "birds", 3),
    ("", "fruits", 0),
    ("cardinals", "", pytest.raises(KeyError))])
def test_category_naming_calculate_score(transcript, category, category_naming_score):
    assert calculate_score(transcript, category) == category_naming_score

Так что в приведенном выше примере второй аргумент должен быть ключом к поисковому словарю, по умолчанию функция выдает KeyError, если не может найти ключ. В последнем тесте моя функция выдаст ошибку KeyError: ''. Я не уверен, как удостовериться, что я ловлю это исключение как pytest.

...