Python Unittest源码分析

本文详细分析了Python内置的单元测试框架Unittest Version 1.2,包括TestResult、TestCase、TestSuite、TextTestResult和TextTestRunner这五个关键类的功能和相互关系。TestResult用于存储测试结果;TestCase作为用户自定义测试用例的基类,运行时调用setUp、测试方法和tearDown;TestSuite是一系列TestCase的集合,能按顺序执行测试;TextTestResult能将测试结果格式化输出到流中;TextTestRunner则负责执行测试并打印结果。
摘要由CSDN通过智能技术生成

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/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值