Как издеваться над атрибутом экземпляра формы 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')