2012-03-11 81 views
2

我不知道TDD是否可以帮助我编程。但是,我不能简单地使用它,因为我的大多数功能都需要大型网络对象(许多节点和链接)并对它们进行操作。或者我甚至读取SQL表格。 其中大多数时间它不是真正的中断逻辑(即不是语义错误),而是重构后的某些函数调用:)在Python中使用大数据的TDD

您认为我可以使用TDD处理这类数据吗?你对此有什么建议? (模拟框架等?) 我会以某种方式获取真实数据,使用函数处理它,验证输出,将输入/输出状态保存到某种模拟对象,然后在其上编写测试?我的意思是,如果我不能提供手工输入数据。

我还没有开始TDD还,所以引用是欢迎的。

+0

看到类似(但不完全相同)的问题:http://stackoverflow.com/questions/842476/applying-tdd-when-the-application-is-100-crud – Raedwald 2012-03-11 17:03:49

回答

1

我的大部分功能需要庞大的网络对象

不知道你的代码什么,这是很难评估这种说法,但是你可能要重新设计你的代码,以便更容易进行单元测试通过将其分解成更小的方法。尽管一些高级方法可能会处理那些麻烦的大对象,但也许低级方法不会。然后您可以单元测试这些低级方法,依靠集成测试来测试高级方法。


编辑:

之前获得与TDD交手,你可能会想尝试只需添加一些单元测试。

3

你已经差不多了它。数据库测试是从一个干净的,最新的模式开始,并将少量已知的固定数据添加到数据库中完成的。然后,您可以在这个受控环境中执行操作,知道您期望看到的结果。

使用网络对象有点复杂,但通常包括对它们进行存根(即完全删除内部功能)或对它们进行模拟,以便返回一组固定的已知数据。

总是有一种方法来测试你的代码。如果证明有困难,通常需要重新考虑代码设计。

我不知道任何Python特定的TDD资源,但TDD上的一个很好的资源是Coad的“测试驱动开发:实用指南”。它使用Java作为语言,但原理相同。