我正在尝试对我的程序进行单元测试。
我的模拟对象中有副作用
from models import MyObject
mock_obj.objects.get.side_effect = mock.Mock(side_effect=MyObject.DoesNotExist)
当我在我测试的函数中有这个时,测试工作并通过:
import models
try:
obj = models.MyObject.objects.get(id=1)
except Exception:
return True
但是,当我将其更改为:
import models
try:
obj = models.MyObject.objects.get(id=1)
except models.MyObject.DoesNotExist:
return True
它给了我这个而不是返回True:
> Traceback (most recent call last):
> File "/home/test/test_my_function.py", line 40, in test_get_job_not_exist
> response = my_function.my_function(request_mock, 1)
> File "/home/handlers/my_function.py", line 35, in get_job_with_id
> obj = MyObject.objects.get(id=id)
> File "/local/lib/python2.7/site-packages/mock/mock.py", line 1062, in __call__
> return _mock_self._mock_call(*args, **kwargs)
> File "/local/lib/python2.7/site-packages/mock/mock.py", line 1118, in _mock_call
> raise effect
> DoesNotExist
为什么会这样? MyObject是一个Django模型对象