python的单元测试模块——unittest

现在的软件开发过程中,测试往往关系到一个项目的成败。所以,我们非常有必要学习如何测试自己所编写的代码。那么,python能够在这方面做些什么呢?

             首先,我们编写一个自己的类文件。

                        例1. widget.py

[python]  view plain copy
  1. class Widget:  
  2.     def __init__(self,size=(40,40)):  
  3.         self._size=size  
  4.     def getSize(self):  
  5.         return self._size  
  6.     def resize(self,width,height):  
  7.         self._size=(width,height)  
  8.     def dispose(self):  
  9.         pass  

            采用手工方式进行单元测试:
[python]  view plain copy
  1. #-*-coding:UTF-8-*-  
  2. #python的测试模块  
  3. from widget import Widget  
  4. class TestWidget:  
  5.     def testSize(self):  
  6.         expectedSize=(40,40)  
  7.         widget=Widget()  
  8.         if widget.getSize()==expectedSize:  
  9.             print "test [Widget]:getSize works perfected!"  
  10.         else:  
  11.             print "test [Widget]:getSize doesn't work!"  
  12.   
  13. #测试  
  14. if __name__=='__main__':  
  15.     myTest=TestWidget()  
  16.     myTest.testSize()  


手工编写的这种测试方法存在很多问题:

1.测试程序的写法没有一定的规范可以遵循,十个程序员可能写出完全不同的测试程序来

2.每个程序员如果都有自己不同的测试类的方法,光维护这些被测试的类都够麻烦了,更不用说维护测试类。

3.测试用的代码可能比程序本身还多,大大加大了程序员的工作量。

 所以,基于以上几点,python推出了它自己的一个框架来帮助我们完成这些功能——PyUnit

使用python的PyUnit测试框架:

[python]  view plain copy
  1. #-*-coding:UTF-8-*-  
  2. from widget import Widget  
  3. import unittest  
  4. class  WidgetTestCase(unittest.TestCase):  
  5.     def setUp(self):  
  6.         self.widget=Widget()  
  7.     def tearDown(self):  
  8.         self.widget=None  
  9.     def testSize(self):  
  10.         self.assertEqual(self.widget.getSize(),(40,40))  
  11.   
  12. #构造测试集  
  13. def suite():  
  14.     suite=unittest.TestSuite()  
  15.     suite.addTest(WidgetTestCase("testSize"))  
  16.     return suite  
  17. #测试  
  18. if __name__=="__main__":  
  19.     unittest.main(defaultTest='suite')  


在采用这个单元测试框架后,使得所有python程序员都可以使用同样的单元测试方法,测试过程成为了一个有序的行为。这就是这个框架所带来的最大的好处。

转载于:https://my.oschina.net/taisha/blog/55862

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值