Как можно сгенерировать ошибку для тестирования исключения в модульном тесте? - PullRequest
0 голосов
/ 09 февраля 2020

У меня такой же код:

def foo(self):
  x = self.a + self.b
  try:
    res = self.a / self.b
  except ZeroDivisionError:
    res = foo_2()
  except AttributeError:
    res = foo_3()
  except CustomError:
    res = foo_4()
  except RemoteAPIError:
    res = foo_5()
  return res

def foo_2():
  ...

def foo_3():
  ...

def foo_4():
  ...

def foo_5():
  ...

Как можно поднять ZeroDivisionError, AttributeError et c в unittest или mock?

1 Ответ

1 голос
/ 09 февраля 2020

Если object является экземпляром вашего класса таким образом, что object.b = 0, тогда вы можете сделать это

   import pytest
   from unittest.mock import MagicMock

   object.foo_2 = MagicMock() 
   with pytest.raises(ZeroDivisionError):
       object.foo()
   object.foo_2.assert_called_once()

Аналогично, вы можете создавать экземпляры вашего класса, которые генерируют две другие ошибки

...