1

我正在测试我的项目,我需要测试django表单,但我不知道该怎么做,这是代码

if request.method == 'POST': # If the form has been submitted...
    name_add = request.POST.get("name")
    form = AddForm(request.POST) # A form bound to the POST datas
    not_add = 0
    if form.is_valid(): # All validation rules pass
        for n in Product.objects.filter(dashboard = curr_dashboard):
            if n.name == name_add:
                not_add = 1
        if not_add != 1:
            obj = form.save(commit=False)
            obj.dashboard = curr_dashboard
            obj.save()
            curr_buylist.add_product(obj.id)
            return HttpResponseRedirect(request.get_full_path()) # Redirect after POST
        else:
            forms.ValidationError("You already have this")
            return HttpResponseRedirect(request.get_full_path())

我在这里验证它并添加到数据库中。但是我该如何测试呢?这是我在测试中写的

def test_index_form(self):
    request = self.factory.post('main/index')
    request.user = User.objects.get(username= 'admin')
    response = index(request)

    self.assertEqual(response.status_code, 200)
4

1 回答 1

1

我认为你的测试是一个好的开始。不幸的是,它只是测试表单无效的情况。除了测试状态代码之外,我还会测试是否正在加载正确的模板,也许还会测试未绑定的表单是否在上下文中,(基本上测试视图中的正确条件是否按预期执行):

self.assertTemplateUsed(response, 'your_template.html')
self.assertIsInstance(response.context['form'], AddForm)

在您的测试中提供有效的表单数据并确保按预期创建新对象也是一个想法。

将无效数据发布到您的视图并检查是否按预期发出重定向也是一个好主意

于 2013-10-22T15:30:33.093 回答