如何在Django中生成单元测试

时间:2012-05-15 06:54:20

标签: django django-forms django-views django-testing

我阅读了生成单元测试的官方文档,但它太杂乱了。我必须为AdminPasswordChangeForm生成一个单元测试用例,在views.py中生成两个已定义的函数,这些函数正在更改is_staffis_active的状态。

我还编写了简单的测试用例来注册用户。以下是views.py中定义的方法(使用AdminPasswordChangeForm更新密码)

def user_change_password(request, id):
     user = User.objects.get(pk=id)
     form = AdminPasswordChangeForm(user, request.POST)
     if form.is_valid():
         new_user = form.save()
         msg = _('Password changed successfully.')
         request.user.message_set.create(message=msg)
         return HttpResponseRedirect('../../user/users')
     else:
         form = AdminPasswordChangeForm(user)
     extra_context = {            
         'form': form,
         'change': True
         }
     return direct_to_template(request,"users/user_password_change.html",
                 extra_context = extra_context)

1 个答案:

答案 0 :(得分:1)

有很多关于如何编写测试的教程。 Django文档(像往常一样)在解释他们的框架在测试方面提供的内容方面做得很好。 https://docs.djangoproject.com/en/dev/topics/testing/?from=olddocs 此外,还有许多文章/幻灯片报道了测试的内容。 http://toastdriven.com/blog/2011/apr/10/guide-to-testing-in-django/

至于如何测试视图,你有几个选择

您可以使用内置请求工厂生成请求对象并直接调用您的函数。您可以确保在适当的时候返回重定向,或者模板或任何您期望的内容。

或者您可以在urls.py文件中对网址发出请求。

我的意思是测试AdminPasswordChangeForm使用用户对象和POST字典来实例化它。检查以确保它正在创建正确的表单,如果您没有对它进行过多定制,则可以跳过测试,因为django可以很好地测试他们的代码。