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?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage