第一步用tdd

时间:2012-08-23 16:28:53

标签: python unit-testing tdd

我目前正在尝试一个爱好项目的测试驱动开发过程,虽然我理解这个概念(首先编写单元测试,看它失败,让它工作,重构你的代码)我仍然有一些问题

我正在研究的项目是Python中的MUD客户端。现在我正忙着实施telnet协议。 (我知道Python中已有一个telnetlib或Twisted中的一个实现,但这不是重点)

现在我有一个TelnetHandler类,它实现了Telnet协议(或至少部分协议)以及各种单元测试。 由于它们相当大,因此它们位于pastebin:TelnetHandlerunit tests

我现在的问题如下:

  • 许多测试依赖于彼此:例如,如果test_handle_read测试失败,那么很多其他测试也会失败。
  • TelnetOptionsTests我添加我的类应该调用的方法,只检查它们是否被调用(各种local_option_enabled方法)。现在,我班上没有这些方法。我应该添加单元测试来检查它们的存在吗?
  • 当我开始编写测试时,我更改了handle_read方法以解析telnet命令。之后,一旦我完成了我的测试,我将handle_read拆分为各种_handle_do_handle_dont等等......但我没有进行单元测试,因为他们正在接受测试原始handle_read。这是正确的方法,或者当您使用不同的方法拆分方法时,编写单元测试也是一种好习惯吗?

基本上,我要问的是各种提示和指示,可以帮助我提高单位测试技能。

谢谢!

1 个答案:

答案 0 :(得分:4)

  

许多测试依赖于彼此:例如,如果test_handle_read测试失败,那么很多其他测试也会失败。

不要这样做。在每次测试开始时,将世界抛弃,并以该测试运行的方式重新创建它。

  

当我开始编写测试时,我更改了handle_read方法以解析telnet命令。之后,一旦我完成了我的测试,我将handle_read拆分为各种_handle_do,_handle_dont等等......但我没有对那些进行单元测试,因为他们正在原始的handle_read中进行测试。这是正确的方法,或者在使用不同的方法拆分方法时编写单元测试是一种好习惯吗?

这取决于。拆分时,您是否拆分为不同的公共方法,或者是处理实现的私有方法。