Использование pytest.raises для проверки пользовательских атрибутов исключений - PullRequest
0 голосов
/ 06 сентября 2018
class CustomException(ValueError):
  def __init__(self, foo, bar):
    self.foo = foo
    self.bar = bar

У меня есть класс с исключением, как указано выше. foo и bar используются функцией, вызывающей ошибку, для предоставления некоторой дополнительной информации об исключении вызывающему классу.

Я пытаюсь проверить это поведение следующим образом:

with pytest.raises(CustomException) as ce:
  func_that_raises(broken_args)
assert ce.foo == 'blah'
assert not ce.bar  # if `bar` is expected to be a boolean

Однако ce - это экземпляр ExceptionInfo, который мне дает py.test, а не - экземпляр CustomException. Есть ли способ сохранить и проверить исходное исключение, которое было поднято?

1 Ответ

0 голосов
/ 06 сентября 2018

Фактический объект исключения доступен как ce.value, поэтому ваши утверждения должны быть записаны как:

assert ce.value.foo == 'blah'
assert not ce.value.bar
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...