0

我想为 Django 配置文件应用程序中的视图编写一些测试。

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

如何测试此错误处理是否按预期工作?什么是最佳实践?

一个想法是使用 Zombie.js 进行 BDD,并测试我看到一个标题不是“创建配置文件”的页面(或者检查我看到一个标题是“编辑配置文件”的页面)。但是 Django 测试文档说:

  • 使用 Django 的测试客户端来确定正在调用正确的视图并且该视图正在收集正确的上下文数据。
  • 使用 Twill 和 Selenium 等浏览器内框架来测试呈现的 HTML 和网页的行为,即 JavaScript 功能。

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

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

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

4

1 回答 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)

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

于 2011-10-30T22:32:03.037 回答