Python面向对象程序测试指南
为何要进行测试
在软件开发中,测试是至关重要的一环。对于Python程序员而言,测试更是不可或缺。
Python是一种动态语言,有人认为正因为其动态特性,测试在Python代码中显得尤为重要。与Java和C++等编译型语言在编译时进行类型检查不同,Python测试更侧重于检查值,确保在正确的时间设置了正确的属性,或者序列具有正确的长度、顺序和值。
为了理解测试的必要性,你可以尝试从头编写一个井字棋游戏,且不进行任何测试,直到程序完全编写完成后再运行,然后修复其中的错误。在这个过程中,你会发现有很多隐藏的错误。例如,有人在实现井字棋时记录到了八个错误,而且还不确定是否全部捕获。
手动运行程序并修复错误是一种粗糙的测试方式。随着程序规模的增大,解释器在代码中可能采取的路径也会增多,手动测试所有情况变得几乎不可能。因此,我们需要编写自动化测试。自动化测试程序可以自动将某些输入传递给其他程序或程序的部分,能在短时间内覆盖更多可能的输入情况。
编写测试主要有以下四个原因:
1. 确保代码按照开发者的预期运行。
2. 确保代码在进行更改后仍然能够正常工作。
3. 确保开发者理解了需求。
4. 确保我们编写的代码具有可维护的接口。
测试驱动开发
测试驱动开发(Test-driven development,TDD)的核心理念是“先写测试”。它将“未测试的代码就是有问题的代码”这一概念更进一步,认为只有未编写的代码才可以不进行测试。具体步骤如下:
1. 编写一个测试,证明代码将按预期工作。由于代码尚未编写,这个测试必然会失败。 <