支持真实快速TDD的测试工具包(首先测试!)在django应用程序中,极值编程就像!

django-extreme-tdd的Python项目详细描述


#Django极端TDD

[![构建状态](https://drone.io/github.com/flaviamimissi/django extreme tdd/status.png)(https://drone.io/github.com/flaviamimissi/django extreme tdd/latest)

django是一个令人惊叹的网站构建框架,但是它缺乏工具来帮助
软件开发过程中一个非常重要的部分:测试驱动的开发。

django已经支持测试,为什么这个项目?

django有一个要使用的测试用例类列表,并且比以前更好地支持运行测试,
但是,如果您想编写访问数据库的功能测试,并且还想将数据库清理过程留给django,那么默认的testcase类将为您处理所有这些问题。但是
不是没有成本的。


对于编写测试的tdd过程,默认测试用例所增加的成本太高了
。django的testcase用一个事务将套件上的每个测试包装起来,因此每个测试都有一个干净的
运行环境。

每个测试都有一个干净的环境确实是一件好事。如果在
测试之后不清理数据库,结果将是不可预测的,我们应该尽量避免在测试环境中出现这种情况。

django用于清理的事务包装解决方案不够好,因为它**非常慢。
您可以亲眼看到,使用以下步骤重新生成:

-编写一个使用数据库的测试,不要自己清理并继承django.test.testcase
-只运行新测试并记下花费的时间(django给出了在不考虑数据库初始设置的情况下运行测试所需的时间,可以使用此值)
-将testcase类从django更改为unittest.testcase。
-执行所需的所有清理(考虑在此处使用setupclass/teardownclass,如果可以,则使用'em)
-再次运行修改后的测试,并比较使用unittest前后花费的时间。testcase

todo:实际执行上述操作步骤和显示结果(结果必须是可重复的)



可以简单地扩展unittest.test case并添加一个属性,以保留添加到测试用例上的所有对象,然后逐个手动删除,对吗?

是的,这是解决问题的一种方法,但是如果你真的考虑一下,这会比django的测试用例快得多吗?也许吧。如果速度快得多,您可能会发现自己的数据库无论如何都是脏的。这个解决方案不关心在级联中删除对象,它只在您创建的对象与另一个对象具有FK时才起作用,但如果相反,您将无法正确地进行清理。

为什么?

无论我们试图用编程的方式做什么,数据库都可以用它自己的功能做得更好。
这是这个项目中实现的测试用例的想法。


extreme.testcase被设计成在setupclass/teardownclass上执行清理。这意味着从extreme.test case继承
的测试用例将有一个完整的干净数据库供其使用。

但这也意味着我们不包括每个测试的清理。但是,这并不意味着我们不能扩展它。
如果在测试用例的每个测试之前/之后需要清理,扩展ExistMe.TestCase并打开一个拉请求!
只需调用与setupclass/teardownclass/setup/teardown相同的清理方法!呸,问题解决了。



待办事项

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JavaBridge errno=10054被Remotehost关闭   javafx如何在每次调用方法中的变量时更新它?(爪哇)   java mod_群集在发现后未平衡负载   Java软件编辑器/语法高亮   java为什么不能强制转换数组的结果。asList()到ArrayList?   java HIBERNATE:无法使用HIBERNATE从MySQL中提取数据   java在Google地图片段上添加布局   java在AbstractTableModel中执行setValueAt之前,我如何做一些事情?   java在整个Tomcat运行时保存变量   java如何在Thymeleaf模板中获取环境变量的值?   java Selenium Chrome驱动程序针对属性的标签   java正则表达式捕获未知数量的重复组