Python 中 unittest(单元测试)的学习
来源:互联网 发布:erp制作软件 编辑:程序博客网 时间:2024/06/05 18:14
python 中单元测试 unittest模块学习
unittest主要概念:
- 1. 一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)。元测试(unit test)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。
- 2.而多个测试用例集合在一起,就是TestSuite,而且TestSuite也可以嵌套TestSuite。
- 3.TestLoader是用来加载TestCase到TestSuite中的,其中有几个loadTestsFrom__()方法,就是从各个地方寻找TestCase,创建它们的实例,然后add到TestSuite中,再返回一个TestSuite实例。
- 4.TextTestRunner是来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法。
- PS:测试的结果会保存到TextTestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息。
关键代码->>>源文件(widget.py)
# /usr/bin/python # encoding:utf-8 class Widget: def __init__(self, size=(40, 40)): self._size = size def get_size(self): return self._size def resize(self, width, height): if width < 0 or height < 0: raise ValueError, 'illegal size' self._size = (width, height)if __name__ == '__main__': widget = Widget() print widget.get_size()
关键代码->>>测试文件(widgettest.py)
# /usr/bin/python# encoding:utf-8from widget import Widgetimport unittestclass WidgetTestCase(unittest.TestCase):# 对象的初始化工作可以在setUp()方法中完成 def setUp(self): self.widget = Widget()# 对象的资源的释放则可以在tearDown()方法中完成 def tearDown(self): self.widget.dispose() self.widget = None# 对应widget类中的get_size函数测试 def test_size(self): self.assertEqual(self.widget.get_size(), (40, 40))# 对应widget类中resize函数的测试 def test_Resize(self): self.widget.resize(100, 100) self.assertEqual(self.widget.get_size(), (100, 100))if __name__ == "__main__": unittest.main()
按照以上两个代码实例可以完成具体的python单元测试测试用例集TestSuite
完整的单元测试很少只执行一个测试用例,开发人员通常需要编写多个测试用例才能对某一软件功能进行比较完成的测试,这些相关的测试用例称为一个测试用例集,在PyUnit中是用TestSuite类来表示的。PyUinit测试框架允许Python程序员在单元测试代码中定义一个名为suite()的全局函数,并将其作为整个单元测试的入口,PyUnit通过调用它来完成整个测试过程:
如:
def suite(): suite = unittest.TestSuite() suite.addTest(WidgetTestCase("testSize")) suite.addTest(WidgetTestCase("testResize")) return suite
or 直接定义一个TestSuite的子类,并在其初始化方法init中完成所有测试用例的添加:
class WidgetTestSuite(unittest.TestSuite) def __init__(self): unittest.TestSuite.__init__(self, map(WidgetTestCase, ("testSize", "testResize")))
这样只需要在suite()方法中返回该类的一个实例就可以了:
def suite(): return WidgetTestSuite()
在PyUnit测试框架中,TestSuite类可以看成是TestCase类的一个容器,用来对多个测试用例进行组织,这样多个测试用例可以自动在一次测试中全部完成。事实上,TestSuite除了可以包含TestCase外,也可以包含TestSuite,从而可以构成一个更庞大的测试用例集:
suite1 = mysuite1.TheTestSuite()suite2 = mysuite2.TheTestSuite()alltests = unittest.TestSuite((suite1, suite2))
编写测试用例(TestCase)并将它们组织成测试用例集(TestSuite)的最终目的只有一个:实施测试并获得最终结果。PyUnit使用TestRunner类作为测试用例的基本执行环境,来驱动整个单元测试过程。但是Python开发人员在进行单元测试时一般不直接使用TestRunner类,而是使用其子类TextTestRunner来完成测试,并将测试结果以文本方式显示出来。举例说明如下:
# /usr/bin/python# encoding: utf-8from widget import Widget import unittest #执行测试的类 class WidgetTestCase(unittest.TestCase): def setUp(self): self.widget = Widget() def tearDown(self): self.widget.dispose() self.widget = None def test_size(self): self.assertEqual(self.widget.get_size(), (40, 40)) def test_resize(self): self.widget.resize(100, 100) self.assertEqual(self.widget.get_size(), (100, 100)) #测试 if __name__ == "__main__": #构造测试集 suite = unittest.TestSuite() suite.addTest(WidgetTestCase("test_size")) suite.addTest(WidgetTestCase("test_resize")) #执行测试 runner = unittest.TextTestRunner() runner.run(suite)
Ps:源代码和测试代码最好放在一起。
0 0
- Python 中 unittest(单元测试)的学习
- python的单元测试unittest
- python中单元测试doctest | unittest
- Python学习之单元测试unittest详解
- Python 的单元测试框架Unittest之一(TestResult类分析)
- python的unittest模块实现软件单元测试
- Python:unittest单元测试框架(一)
- Python之unittest单元测试(翻译)
- python--单元测试--unittest
- PYTHON单元测试模块unittest
- python单元测试unittest
- python-unittest模块【单元测试】
- python单元测试unittest
- python单元测试unittest
- python单元测试unittest
- python单元测试unittest
- Python单元测试框架unittest
- python单元测试unittest
- java日期格式及类型转换
- WED编程基础———杂记之注释,div,各种选择符
- android 横竖屏转换时不需要重新调用oncreate
- 青年创业好榜样--“佛山点赞哥”张祖奎成为广东共青团向上向善好青年!
- C/C++中容易造成内存溢出的函数
- Python 中 unittest(单元测试)的学习
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- bacula备份工具
- 乐观锁和悲观锁的区别
- Vc中关于DC(设备环境函数(Device Context))的理解
- C++如何判断运算结果溢出
- 修改Eclipse默认workspace目录
- Android 基于google Zxing实现对手机中的二维码进行扫描
- Excel 单元格合并