首页 > 编程 > Python > 正文

python单元测试unittest实例详解

2020-02-23 01:08:53
字体:
来源:转载
供稿:网友

本文实例讲述了python单元测试unittest用法。分享给大家供大家参考。具体分析如下:

单元测试作为任何语言的开发者都应该是必要的,因为时隔数月后再回来调试自己的复杂程序时,其实也是很崩溃的事情。虽然会很快熟悉内容,但是修改和调试将是一件痛苦的事情,如果你在修改了代码后出现问题的话,而单元测试可以帮助我们很快准确的定位到问题的位置,出现问题的模块和单元。所以这是一件很愉快的事情,因为我们知道其它修改或没有修改的地方仍然是正常工作的,而我们目前的唯一问题就是搞定眼前这个有点问题的“家伙”。所以工作会在轻松中开始,并且很快将会结束,因为你已经知道很多信息了。
 
单元测试自然是对程序中最小的可测试模块--函数来进行测试;因为单元测试的对象是函数,也就是说你得被测试对象一定要有输出结果,哪怕就是异常输出,也得有输出,以便单元测试模块能够捕获返回值,并且与预期值进行比较,从而得出测试通过与否。
 
单元测试的加载方式有2种:一种是通过unittest.main()来启动单元测试的测试模块;一种是添加到testsuite集合中再加载所有的被测试对象,而testsuit里存放的就是单元测试的用例,下面分别列出了2种方法的使用。

1.1 测试模块中的函数:

被测模块:

#!/usr/bin/env python #encoding: utf-8 def sum( x, y):     return x+y def sub( x, y):     return x-y

单元测试模块:

#!/usr/bin/env python #encoding: utf-8 import unittest import myclass class mytest(unittest.TestCase):   ##初始化工作   def setUp(self):     pass   #退出清理工作   def tearDown(self):     pass   #具体的测试用例,一定要以test开头   def testsum(self):     self.assertEqual(myclass.sum(1, 2), 2, 'test sum fail')   def testsub(self):     self.assertEqual(myclass.sub(2, 1), 1, 'test sub fail')   if __name__ =='__main__':   unittest.main()

测试结果:【F表示一个fail, F前的点表示一个通过,有E的话表示程序自身异常】

.F======================================================================FAIL: testsum (__main__.mytest)----------------------------------------------------------------------Traceback (most recent call last): File "C:/Users/xiaowu/workspace/mypython/unitTest.py", line 19, in testsum  self.assertEqual(myclass.sum(1, 2), 2, 'test sum fail')AssertionError: test sum fail----------------------------------------------------------------------Ran 2 tests in 0.001s FAILED (failures=1)

1.2 测试模块类中的函数:

被测模块:

#!/usr/bin/env python#encoding: utf-8class myclass:  def __init__(self):    pass  def sum(self, x, y):    return x+y  def sub(self, x, y):    return x-y            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表