Mocking-Test in Django funktioniert nicht, wenn alle in TestCase ausgeführt werden, funktioniert aber gut nacheinander
Ich verwende Python-Mock zum Patchen einiger Funktionen und Klassen beim Testen von Ansichten in Django.
Wenn ich jeden Test einzeln durchführe, funktionieren alle Tests. Aber wenn ich den TestCase starte, funktionieren einige Tests nicht (der Patch hat keine Wirkung).
class ViewsTest(TestCase):
@mock.patch('extras.utils.get_user_category')
def test_select_test(self, mock_method):
mock_method.return_value = Category(id=1, name="Foo")
response = self.client.post(reverse('select_test', args=['Foo']))
self.assertEqual(200, self.client.post(reverse('select')).status_code)
@mock.patch('user_profile.models.Profile.categories')
def test_category_view(self, mock_related):
mock_related.all.return_value = []
self.assertEqual(200, self.client.post(reverse('category')).status_code)
Ich habe einen Ausdruck in den Ansichten, um jede verspottete Methode zu sehen, wenn es funktioniert:
MagicMock name = 'get_user_category' id = '162815756'
Und wenn es nicht funktioniert, sehe ich:
Funktion get_user_category bei 0x8e0fb8c
Ich habe versucht, den Patcher zu starten () und zu stoppen (), aber ich habe immer noch Probleme.
Worin besteht das Problem?