作者: Jason Diamond
译者: 吴海燕
原文发表日期: 12/02/2004
翻译日期: 2/17/2005
原文件位置:http://www.onlamp.com/pub/a/python/2004/12/02/tdd_pyunit.html
l 介绍
l Python的unittest模块
l 动机
l 样例输入
l 让我们开始吧
l 小步前进
l 重构
l 总结
介绍
测试驱动开发不是测试。测试驱动开发是开发(和设计),主要用于提高设计和代码的质量。而单元测试样例只不过是其产生的一个有用的副产品而已。
以上就是我要告诉你的关于测试驱动的事情,本文剩下的就是要告诉你测试驱动是如何的工作的。现在和我一起开始开发一个小小工具,这里我们会遇到错误,解决错误并且还会根据测试结果来改变我们的设计,另外,我们还将使用到重构,设计模式和面向对象思想。为了让我们的开发更加的方便,我们使用Python来做这次的开发。
Python十分便于进行测试驱动开发,因为他可以在不妨碍我们工作的同时很好的完成需要做的工作。甚至我们不需要任何额外的模块就可以做测试驱动开发,因为需要的模块已经包含在了标准发行版里面了。
这篇文章里我假定你熟悉Python,但是不要求熟悉测试驱动开发或者Python的unittest模块。事实上,本文并不要求你知道多少^_^
Python的unittest模块
自从2.1版本开始,Python的标准库当中就已经包含了unittest这个模块了,此模块基于Java的单元测试标准框架Junit(Kent Beck和Erich Gamma编写)。在2.1之前的,此模块名为PyUnit,需要独立下载。
下面让我们开始吧,这儿有一个函数和他的测试―――在一个文件里面。
import unittest
# 这儿是函数
def IsOdd(n):
return n % 2 == 1
# 这儿是单元测试
class IsOddTests(unittest.TestCase):
def testOne(self):
self.failUnless(IsOdd(1))
def testTwo(self):
self.failIf(IsOdd(2))
def main():
unittest.main()
if __name__ == '__main__':
main()