在Django个人资料应用中测试视图的最佳做法?

问题描述 投票:0回答:1

我想为Django个人资料应用中的视图编写一些测试。

视图具有一些智能的错误处理逻辑。 例如,如果我们尝试创建一个配置文件,但该配置文件已存在,则只需重定向至现有的配置文件页面(或可能重定向至编辑配置文件页面)。

如何测试该错误处理是否按需工作? 什么是最佳做法?

一种想法是使用Zombie.js进行BDD,并测试我是否看到标题不是“创建个人资料”的页面(或者可能要检查我是否看到标题为“编辑个人资料”的页面)。 但是Django测试文档说:

  • 使用Django的测试客户端来确定正在调用正确的视图,并且该视图正在收集正确的上下文数据。
  • 使用诸如Twill和Selenium之类的浏览器内部框架来测试渲染的HTML和Web页面的行为,即JavaScript功能。

但是,如果我要使用Django测试客户端,则可以执行以下操作:

  • 模拟URL上的GET和POST请求并观察响应-从低级HTTP(结果标头和状态代码)到页面内容,应有尽有。
  • 测试是否对给定的URL执行了正确的视图。
  • 测试给定的请求是否由给定的Django模板以及包含某些值的模板上下文呈现。

我应该使用测试客户端,然后查看页面内容吗? 我应该看看呈现了什么模板吗? 什么是测试此视图的适当方法?

django unit-testing bdd django-testing zombie.js
1个回答
1
投票

重定向和配置文件创建非常django,因此尽管您可能使用其他框架来测试JS功能,但我将为此实例使用django测试客户端。

您必须根据具体情况决定测试的范围。 时间有限,某些方面比其他方面更容易破损。 例如,我不用担心模板分辨率-200个状态码和快速检查内容的能力。

不管怎样,我将从识别视图具有的不同状态开始(我在这里猜):

  • 渲染自身(检查内容,模板,状态码等)
  • 个人资料表单验证错误
  • 概要文件表单成功:概要文件创建:成功重定向
  • 智能错误处理/重定向。

如何测试该错误处理是否按需工作?

# create object with specific ID.
# post form data that should trigger your special redirect. 
# ensure the redirect takes you to the model you just created via reverse
response = client.post(reverse('form_url'), {'valid_form_data': ''}, follow=True)
assertRedirects(response, reverse('view_url', args=[id]), target_status_code=200)

这将确认正确的配置文件已重定向到给定的任何数据,而您决定应触发此操作。

© www.soinside.com 2019 - 2024. All rights reserved.