У меня есть следующий сценарий:Mocking Django модели и сохранить()
в моем models.py
class FooBar(models.Model):
description = models.CharField(max_length=20)
в моем файле utils.py.
from models import FooBar
def save_foobar(value):
'''acts like a helper method that does a bunch of stuff, but creates a
FooBar object and saves it'''
f = FooBar(description=value)
f.save()
в tests.py
from utils import save_foobar
@patch('utils.FooBar')
def test_save_foobar(self, mock_foobar_class):
save_mock = Mock(return_value=None)
mock_foobar_class.save = save_mock
save_foobar('some value')
#make sure class was created
self.assertEqual(mock_foobar_class.call_count, 1) #this passes!!!
#now make sure save was called once
self.assertEqual(save_mock.call_count, 1) #this fails with 0 != 1 !!!
Это упрощенная версия того, что я пытаюсь сделать ... так что пожалуйста, не hungup почему у меня есть файл утилитами и а вспомогательная функция для этого (в реальной жизни это делает несколько вещей). Кроме того, обратите внимание, что, хотя это упрощено, это фактический рабочий пример моей проблемы. Первый вызов для проверки call_count возвращает 1 и передает. Однако второй возвращает 0. Таким образом, мне кажется, что мой патч работает и получает вызов.
Как я могу проверить, что создается не только экземпляр FooBar, но и что метод сохранения на нем вызван?
Вы избили меня до ответа! – fuzzyman
Upvote для ответа на мой запрос! Большое спасибо! –
@matthew! Большое спасибо! –