如何模拟django表单的实例属性
How to mock instance attribute of django form
我正在做一个单元测试,我正在模拟一个 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
returns 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 和单元测试。我已经使用我们代码库的辅助函数成功地模拟了 is_valid
,但它似乎不适用于实例属性。知道如何解决这个问题吗?
您可能需要在视图中使用表单的地方模拟表单,因为在模拟运行之前它已经导入到那里。
所以像这样:
@patch('my_app.my_views.PaymentForm')
我正在做一个单元测试,我正在模拟一个 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
returns 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 和单元测试。我已经使用我们代码库的辅助函数成功地模拟了 is_valid
,但它似乎不适用于实例属性。知道如何解决这个问题吗?
您可能需要在视图中使用表单的地方模拟表单,因为在模拟运行之前它已经导入到那里。
所以像这样:
@patch('my_app.my_views.PaymentForm')