Django测试技巧
根据这个问题的精神,我想知道有没有人能分享一些关于为Django网页应用创建一个有用的和“完整”的测试套件的建议(测试套件真的能“完整”吗?)。
我的情况:我已经做出了一个原型,现在正在添加一些回归测试。我个人在大多数测试中使用django-webtest,还有一些URL测试是用Django测试客户端进行的。
我对我的测试套件一点也不满意。我离测试专家还远着呢,所以我想在这方面有所提高。任何建议——无论是否适用于我的情况——都将非常感谢。
2 个回答
测试可以回答至少四个问题。
我的实现正确吗?这个应用程序的表现是否和文档描述的或者我脑海中想象的那样?
我最近的修改有没有把什么东西弄坏?
我的应用程序安全吗?要考虑到普通用户和那些心怀不轨的人。
我的应用程序的性能够用吗?
关于第一个问题,每个“功能”至少需要有一个测试,主要功能可能需要多个测试。如果你既是开发者又是测试开发者,这里很容易漏掉一些测试。
对于第二个问题,开始时就要养成在写代码的同时写测试用例的习惯,并且要认真执行这些测试。
关于第三个问题,要确保在正常程序操作之外访问的链接在权限方面表现正常。你可能不希望一个用户能修改或查看另一个用户的信息,但如果他们只需输入 ../user/505 就能访问所有内容,那可能就有问题了。我相信这里还有很多其他需要测试的内容,希望其他人也能补充。
对于一个流量巨大的应用程序,测试性能和扩展性不是我特别了解的领域。
查看Django本身的测试用例,可以帮助你了解应该测试的细节。Django主干测试
Django的文档中有一篇关于测试的好文章:可以在文档中搜索“测试”。
我推荐你看看Django 1.1 测试与调试,作者是Karen M. Tracey。书的前五章主要讲的是在Django中如何进行测试。特别是,第五章讨论了如何整合其他测试工具。下面是第五章的一些内容摘录:
在这一章中,我们:
- 了解了Django提供了哪些钩子来添加测试功能
- 看到了这些钩子如何使用的例子,特别是在添加代码覆盖率报告的情况下
- 还探讨了一个不需要使用这些钩子的例子——在我们的Django测试案例中整合使用
twill
测试工具
以下是Karen Tracey在她书的第五章中提到的一些工具链接:
Lettuce
你可能还想看看Lettuce。从官网上说:
Lettuce是一个非常简单的基于Cucumber的BDD工具。
Lettuce的文档中还有一部分讲的是如何将Lettuce与Django整合。