【问题标题】:How to generate a unit tests in Django如何在 Django 中生成单元测试
【发布时间】:2012-05-22 15:51:47
【问题描述】:

我阅读了生成单元测试的官方文档,但它太乱了。我必须为AdminPasswordChangeForm 生成一个单元测试用例,并在views.py 中定义两个函数,它们正在改变is_staffis_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)

【问题讨论】:

  • 我想为views.py中定义的方法编写单元测试用例,即user_change密码(上面写的有问题)。

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


【解决方案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 在测试他们的代码方面做得很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2018-07-26
    • 2013-05-08
    相关资源
    最近更新 更多