Как издеваться над атрибутом экземпляра формы django

Я делаю модульный тест, в котором я имитирую форму Django, но у меня возникли проблемы, потому что мне нужно имитировать две вещи из формы:

  • Атрибут экземпляра (token)
  • Метод (is_valid)

Я использую форму в представлении, импортируя ее следующим образом:

from profiles.forms import PaymentForm

И я попытался высмеять это следующим образом:

    @patch('profiles.forms.PaymentForm')
    def test_when_processing_a_payment_then_the_event_is_tracked(self, payment_form_class):
        payment_form_class.is_valid.return_value = True
        payment_form_class.cleaned_data = {'token': 1}

Этот подход не работает, is_valid возвращает false.

    @patch('profiles.forms.PaymentForm')
    def test_when_processing_a_payment_then_the_event_is_tracked(self, payment_form_class):
        payment_form_class.return_value.is_valid = True
        payment_form_class.return_value.cleaned_data = {'token': 1}

Это ни то, ни другое.

Я использую Django и unittest. Я успешно высмеял is_valid с помощью вспомогательной функции нашей кодовой базы, но, похоже, она не работает с атрибутами экземпляра. Есть идеи, как это решить?

Возможно, вам нужно подражать форме в том месте, где она используется в вашем представлении, поскольку она уже импортирована туда до того, как запущен ваш макет.

Так что что-то вроде:

@patch('my_app.my_views.PaymentForm')
Вернуться на верх