0

我阅读了生成单元测试的官方文档,但它太乱了。AdminPasswordChangeForm我必须为, 和两个定义的函数生成一个单元测试用例,views.py其中正在改变 和 的is_staff状态is_active

我还编写了简单的测试用例来注册用户。Follow 是定义的方法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)
4

1 回答 1

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 文件中的 url 发出请求。

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

于 2012-05-15T12:41:47.437 回答