如何在单元测试中为测试异常生成错误?

How can to generate error for testing exception in unit test?

我有相同的代码:

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():
  ...

如何在unittestmock中提高ZeroDivisionErrorAttributeError等?

如果 object 是您的 class 的一个实例,使得 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()

同样,您可以创建生成其他两个错误的 class 实例