【问题标题】:How to start TDD in Django?如何在 Django 中启动 TDD?
【发布时间】:2011-12-05 10:57:55
【问题描述】:

我对 Django 和单元测试都是新手,但由于我在使用框架相当长的时间后开始了一个项目,因此我决定尝试进行单元测试。

抛开我的热情不谈,我对如何规划开发过程一无所知。我在 github 中搜索了一些使用单元测试的 Django 项目,然后偶然发现了this。我看到“标记”应用程序只有测试,它看起来不错,但我不知道如何分解它。为什么应用程序/标记/测试/中的“models.py”文件?那里的模型类与apps/tagging/models.py中的模型类无关......

关于如何解决这个问题的任何想法或找到一个关于如何在 django 环境中实施单元测试的好例子?

另外,我在文档中读到 Django 在 1.3 中引入了 unittest2,因此“Django 1.1 测试和调试 - 由 Karen M. Tracey 撰写”是否会有所帮助,或者您认为它会引起一些混乱吗?

无论如何,我感谢您提前提供的任何意见。

【问题讨论】:

    标签: django unit-testing tdd


    【解决方案1】:

    Django 在帮助您入门方面做得很好。他们概述了应该和不应该测试的内容,以及如何使用一些内置的测试类。 https://docs.djangoproject.com/en/dev/topics/testing/

    此外,我推荐django-nose 测试运行器。它有很多很棒的插件。

    我认为一般惯例是在每个应用程序中都有一个 tests.py 文件。

    我个人将为我创建的每个函数编写至少 1 个测试。更多取决于逻辑的复杂程度。随着应用程序的开发,这些测试会发展为我的项目的回归测试。

    【讨论】:

    • 您是否拥有或知道任何好的示例项目,以便我可以检查不同应用程序部分(表单、视图、url、模型、会话等)的测试?那真的很有帮助。另外,django-nose 有什么意义?你用什么样的插件?
    【解决方案2】:

    如果我可以插入我自己的教程,它将涵盖如何在 Django 中从头开始执行 TDD。我涵盖了与“官方”Django 教程相同的步骤,除了在每个步骤中都使用 TDD。这包括使用 Selenium 进行完整的浏览器自动化测试(它允许您从最终用户的角度测试行为,包括以后包含 javascript 的可能性)。我还展示了如何使用 Django TestClient 进行单元测试...

    http://tdd-django-tutorial.com

    【讨论】:

    • 我想我前段时间在 github sme 中偶然发现了这个项目(django poll 应用程序 + 所有测试)。我不知道也有一步一步的……谢谢伙计。已经有一段时间了,但我会看看它。
    • 看看你过得怎么样!我试着写它,所以它假设没有任何知识,并且真的是一步一步来的......非常感谢评论!
    • 我正在阅读它...甚至不知道功能测试可以自动化。我听说过 Selenium,但我从未读过 fuzz 的全部内容。到目前为止看起来很棒。不过我确实有一个问题....在单元测试时您多久提交一次代码?我正在经历 Poll 模型创建位,...如果我要编写测试,运行它,添加一个字段,提交,运行测试,添加另一个字段,提交,这似乎有点过头了,运行测试等...提交代码更改的速度是多少?
    • 好问题...我想知道是否应该在某个时候解决 VCS。我的模式往往是:FT 的初稿获得提交。然后,您可以为每个单元测试及其相关的代码更改进行单独的提交,但这可能是过度的。我会说,例如在创建一个新模型时,编写单元测试,让它们全部通过,然后一起提交测试和工作模型类......这个想法是让你的提交足够细化,这样很容易稍后恢复更改...
    • 我认为在每个最小的连贯的、自洽的工作变更之后提交是很好的。例如,更改 FT,添加新的单元测试,更改几行产品代码,然后提交。当你提交时,所有测试都应该通过,总是这样。有时提交只是产品代码的重构,没有测试更改。有时提交只是几行——也许只有一行。将您的“实施新功能”提交与“保留行为的重构”提交分开。分离出你的“空白和 cmets”提交。
    猜你喜欢
    • 2011-09-21
    • 2018-11-29
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 2017-03-19
    • 1970-01-01
    • 2010-10-18
    相关资源
    最近更新 更多