Tom*_*lar 4 python django unit-testing exception mocking
我真的在寻找如何修补Whatever.objects.get_or_create,但我无法得到任何建议或想法如何去做.
好吧,我的问题是我有这样的事情:
def create_and_get_object(
name, request, save_url=True, data=None):
try:
(object_type_, created) = Object.objects.get_or_create(
name=name)
try:
...
except Exception:
obj = None
msg = ("Failed to get or create object `Object` with"
"name='%s'" % name)
logger_.exception(msg, extra={'request': request})
return obj
Run Code Online (Sandbox Code Playgroud)
所以,我想测试一下Object.objects.get_or_create会抛出异常...
我正在尝试,Mock(side_effect=Exception())但我真的不知道如何使用它来得到我所期望的.
所有这些都可以获得该函数的100%覆盖率(不包括异常行),还有许多其他例外情况.
测试这个的正确方法是什么,这样的代码是什么?
我究竟做错了什么?
ale*_*cxe 10
我喜欢with用mock的patch.object来使用python的语句.在你的情况下,它应该像这样:
from mock import patch
from django.test import TestCase
from django.db.models.manager import Manager
from anothermodule import create_and_get_object
class TestCreateAndGetObject(TestCase):
def test_exception_throwing(self):
with patch.object(Manager, 'get_or_create') as mock_method:
mock_method.side_effect = Exception("test error")
result = create_and_get_object('test', 'test')
self.assertIsNone(result)
Run Code Online (Sandbox Code Playgroud)
应该在理论上工作,希望有所帮助.
| 归档时间: |
|
| 查看次数: |
2045 次 |
| 最近记录: |