【问题标题】:Best practices for testing views in a Django profile app?在 Django 配置文件应用程序中测试视图的最佳实践?
【发布时间】:2011-12-18 08:51:25
【问题描述】:

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: django unit-testing bdd django-testing zombie.js


    【解决方案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)
    

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

    【讨论】:

    • 我可以在 Django 测试代码之外使用 assertRedirects 吗?我正在使用 lettuce (lettuce.it) 编写测试用例,因为它可以更轻松地指定许多测试,但我不认为我在 Django TestCase 对象中。
    猜你喜欢
    • 1970-01-01
    • 2011-11-28
    • 2010-12-22
    • 1970-01-01
    • 2014-04-18
    • 2010-10-31
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多