模拟Django ModelChoiceField的数据库调用

时间:2018-04-18 12:09:33

标签: python django django-models mocking django-unittest

我想在没有测试到达数据库的情况下测试表单。表单使用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()

我想我不是在修补正确的地方。你能给我一些关于如何模拟数据库调用的提示吗?

0 个答案:

没有答案