我想在没有测试到达数据库的情况下测试表单。表单使用ModelChoiceField引用Model,而ModelChoiceField在<form name="basic_form" id="myForm" method="post" action="/">
<p onclick="demo();" id="get-name">Click here to get form name</p>
期间运行查询,尝试从数据库中获取引用的对象。这发生在form.is_valid()
中,它试图从默认管理器的QuerySet中获取对象。
我尝试修补我的模型related_object_field.to_python()
,但无济于事:
queryset.get()
这是一个回溯片段,显示数据库被击中的原因以及我想要嘲笑的内容:
@patch('myapp.models.MyModel._default_manager.get_queryset')
def test_form(mocked_get_queryset):
assert mocked_get_queryset.called # <-- this assertion fails
[...]
form = MyForm(data=my_data)
assert form.is_valid()
我想我不是在修补正确的地方。你能给我一些关于如何模拟数据库调用的提示吗?