Ich habe folgendes Szenario:Mocking Django Modell und speichern()
in meinem models.py
class FooBar(models.Model):
description = models.CharField(max_length=20)
in meiner utils.py Datei.
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()
in 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 !!!
Dies ist eine vereinfachte Version von dem, was ich ... so zu tun, ich versuche bitte nicht hungup, warum ich habe eine utils-Datei und eine Hilfsfunktion dafür (im wirklichen Leben macht es mehrere Dinge). Bitte beachten Sie auch, dass dies ein vereinfachtes Beispiel für mein Problem ist. Der erste Aufruf von call_count gibt 1 zurück und wird übergeben. Der zweite gibt jedoch 0 zurück. Es scheint also, als ob mein Patch funktioniert und aufgerufen wird.
Wie kann ich testen, dass nicht nur eine Instanz von FooBar erstellt wird, sondern auch, dass die Save-Methode aufgerufen wird?
Sie haben mich auf die Antwort geschlagen! – fuzzyman
Upvote zum Antworten auf meine Anfrage! Vielen Dank! –
@matthew! Vielen Dank! –