如何解决模拟表单集 save_formset 方法 django 表单?
我是编写测试的新手,想知道如何模拟 ModelAdmin save_formset 功能的正确方法。基本上,我不想创建表单集,而是想模拟 formset.forms 的值并将其传递给函数,以便它只测试 save_formset 函数的重要部分。但是,在函数结束时,它仍然尝试调用 ModelAdmin formset.save() 方法,这就是我获得 NoneType 属性的地方,因为实际上我没有将实际的表单集传递给函数。这是我到目前为止尝试过的 admin.py
def save_formset(self,request,form,formset,change):
forms = self.get_formset_forms(formset)
for f in forms:
obj = f.instance
if not hasattr(obj,"creator"):
obj.creator = request.user
formset.save()
def get_formset_forms(self,formset):
return formset.forms
tests.py
@patch("core.apps.survey.admin.SurveyAdmin.get_formset_forms")
def test_save_formset(self,mock_get_formset_forms,mock_formset_save):
user = mixer.blend(User)
mock_get_formset_forms.return_value = [{'instance':{'iss':user}}]
mock_formset_save.return_value=1
site = AdminSite()
survey_admin = admin.SurveyResponseAdmin(Survey,site)
survey_admin.save_formset(request=None,form=None,formset=None,change=None)
错误日志
survey_admin.save_formset(request=None,change=None)
core/apps/survey/tests/test_admin.py:56:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <core.apps.survey.admin.SurveyResponseAdmin object at 0x7f4ed5feadc0>,request = None,form = None,formset = None,change = None
def save_formset(self,change):
"""
Given an inline formset save it to the database.
"""
> formset.save()
E AttributeError: 'NoneType' object has no attribute 'save'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。