Django测试:使用带有参数的表单发布请求

时间:2019-03-11 13:59:46

标签: python django forms testing testcase

在发送正确的数据后,我想测试视图是否重定向。问题是我使用的表格在初始化时需要参数。我有一种方法可以建立一个响应,供以后在测试中使用。该方法适用于我的其他视图,但不能与使用需要参数进行初始化的Forms的视图一起使用。

在我的forms.py中,我有:

class SupportIssueForm(forms.ModelForm):
    class Meta:
        model = SupportIssue
        fields = ('user', 'property', 'title', 'text', 'is_urgent', 'is_service')

    def __init__(self, person_company, properties, is_property,  *args, **kwargs):
        super(SupportIssueForm, self).__init__(*args, **kwargs)
        self.fields['is_service'].widget.attrs['class'] = 'custom-control-input'
        ...

我稍后在测试中使用的用于生成响应的方法如下:

def generate_logged_in_user_post_response(self, data):
    request = self.factory.post(self.url, data={**self.form_class_args[0], **data})
    request.user = self.logged_in_user
    return new_support_issue_view(request)

我也尝试过:

def generate_logged_in_user_post_response(self, data):
        form = SupportIssueForm(**self.form_class_args[0], data=data)
        request = self.factory.post(self.url, form)
        request.user = self.logged_in_user
        return new_support_issue_view(request)

self.form_class_args[0]是我在其他地方声明的一些词典:

    {
        "person_company": person_company, # <query object>
        "properties": properties, # <query object>
        'is_property': False
    }

0 个答案:

没有答案