Unittest,即Unit testing framework(也可以称为PyUnit),Python自带的单元测试框架,当前版本Version 2.1。PyUnit是Python版的JUnit,但是2.1版的PyUnit太复杂,不利于理解,这里主要分析 Version 1.2。
PyUnit类包含TestResult,TestCase, TestSuite,TextTestResult,TextTestRunner几个类。
TestResult类
TestResult类用于存储单元测试的结果,用户不需要对TestResult类进行操作。TestCase和TestSuite类会自动管理TestResult。
TestCase类
用户自定义case的基类,构造函数传入的methodName是case运行时调用的方法名。假设用户自定义的TestCase为WidgetCase,那么WidgetCase.run方法会依次执行WidgetCase.setUp,WidgetCase.methodName,WidgetCase.tearDown方法。当然,TestCase本身也是可执行的,因为其重载了( )运算符。
TestSuite类
一系列TestCase的集合,可以通过addTest和addTests增加case。run方法将依次调用case列表中的case。TestSuite重载了( )运算符。
TextTestResult类
TextTestResult类是TestResult类的子类,但是可以打印格式化的测试结果到流中。
TextTestRunner类
TextTestRunner类是驱动类,可以执行TestCase或TestSuite,并且会打印格式化的测试结果到流中。
TestResult,TestCase, TestSuite,TextTestResult,TextTestRunner之间的关系如上图所示。
PyUnit1.2的源代码如下:
#!/usr/