我目前正在尝试一个爱好项目的测试驱动开发过程,虽然我理解这个概念(首先编写单元测试,看它失败,让它工作,重构你的代码)我仍然有一些问题.
我正在研究的项目是Python中的MUD客户端.现在我正忙着实施telnet协议. (我知道Python中已有一个telnetlib或Twisted中的实现,但这不是重点)
现在我有一个TelnetHandler类,它实现了Telnet协议(或至少部分协议)和各种单元测试.
由于它们相当大,因此它们位于pastebin:TelnetHandler和unit tests
我现在的问题如下:
>许多测试依赖于彼此:例如,如果test_handle_read测试失败,那么许多其他测试也将失败.
>在TelnetOptionsTests中,我添加了我的类应调用的方法,只检查它们是否被调用(各种local_option_enabled方法).现在,我班上没有这些方法.我应该添加单元测试来检查它们的存在吗?
>当我开始编写测试时,我更改了handle_read方法以解析telnet命令.之后,一旦我完成了我的测试,我将handle_read拆分为各种_handle_do,_handle_dont等等……但我没有对那些进行单元测试,因为他们正在原始的handle_read中进行测试.这是正确的方法,还是在使用不同方法拆分方法时编写单元测试的好习惯?
基本上,我要问的是各种提示和指针可以帮助我提高我的单元测试技能.
谢谢!
解决方法:
A lot of tests depend on each other: for instance if the test_handle_read tests fails then a lot of other tests will fail too.
不要这样做.在每次测试开始时,将世界抛弃,并以该测试运行的方式重新创建它.
When I started writing my test I changed the handle_read method to also parse telnet commands. Afterwards, once I had my tests done I split the handle_read in various _handle_do, _handle_dont, etc… But I don’t have unit tests for those as they’re being tested in the original handle_read. Is this the proper way, or is it good practice to write unit tests also when you split a method in different methods?
这取决于.拆分时,您是否拆分为不同的公共方法,或者是处理实现的私有方法.
标签:python,unit-testing,tdd
来源: https://codeday.me/bug/20190626/1288923.html