Pull to refresh

Comments 5

with pytest.raises(TariffDoesNotExist) as error:

Это хороший код. Но с бывает когда ловят общие или встроенные исключения, то тогда надо сообщение проверять.

Вот этот тест никогда не упядёт, так как в нем опечатка, которая кидает ожидаемое исключение.

def test_attribute_name_is_not_set_for_human(data):
  with pytest.raises(AttributeError):
    data.huNan.name

В таких случаях надо еще сообщение проверять.

def test_attribute_name_is_not_set_for_human(data):
  with pytest.raises(AttributeError, match="object has no attribute 'name'"):
    data.huNan.name

Согласен, это хороший вариант, что бы проверить текст.

Если нужно проверить, что-то большее чем первый аргумент исключения, то после with ... нужно написать "as error" и после контекстного менеджера проверить всё, что нужно )

Только нужно помнить, что это regexp под капотом и в вашем случае нужно сделать match="^object has no attribute 'name'$"

Не всегда стоит матчить целую фразу, можно и часть. В моём примере кстати умышленно отрезана первая часть сообщения, чтобы не создавать излишней привязки к имени класса.

UFO just landed and posted this here
Sign up to leave a comment.

Articles