python中unittest模块单元测试实例介绍

本文主要通过实际的例子来演示如何来使用python中的unittest模块来做单元测试,通过具体的待测试的类,测试类,测试结果三部分来说明unittest模块的用法:

待测试的类(Widget.py)

# Widget.py
# Python 2.7.6
class Widget:
  def __init__(self, size = (40,40)):
    self.size = size
  def getSize(self):
    return self.size
  def reSize(self,width,height):
    if width <0 or height < 0:
      raise ValueError, 'illegal size'
    else:
      self.size = (width,height)
      return self.size
  def dispose(self):
    pass
 &#91;/code&#93;
<p>测试类(Auto.py)
</p>

# coding=utf8
# Auto.dy
# Python 2.7.6
from Widget import Widget #导入测试类模块Widget
import unittest      #导入unittest模块
class WidgetTestCase(unittest.TestCase):
#让所有执行测试的类都继承于TestCase类,可以将TestCase看成是对特定类进行测试的方法的集合
  #在setUp()方法中进行测试前的初始化工作。
  def setUp(self):
    self.widget = Widget()
  #并在tearDown()方法中执行测试后的清除工作,setUp()和tearDown()都是TestCase类中定义的方法。
  def tearDown(self):
    self.widget = None
  #测试Widget类中getSize方法
  def testgetSize(self):
    print "Test GetSize"
    #对Widget类中getSize()方法的返回值和预期值进行比较,确保两者是相等的,
    #assertEqual()也是TestCase类中定义的方法。
    self.assertEqual(self.widget.getSize(), (40, 40))
  #测试Widget类中reSize方法
  def testreSize(self):
    print "Test Resize"
    #对Widget类中reSize()方法的返回值和预期值进行比较,确保两者是相等的。
    #assertEqual()也是TestCase类中定义的方法。
    self.assertEqual(self.widget.reSize(50,100),(50,100))
#提供名为suite()的全局方法,PyUnit在执行测试的过程调用suit()方法来确定有多少个测试用例需要被执行,
#可以将TestSuite看成是包含所有测试用例的一个容器。
def suite():
  suite = unittest.TestSuite()
  suite.addTest(WidgetTestCase("testgetSize"))#往此添加需要测试的方法testgetSize()
  suite.addTest(WidgetTestCase("testreSize")) #往此添加需要测试的方法testreSize()
  return suite
if __name__ == "__main__":
  unittest.main(defaultTest = 'suite') #在主函数中调用全局方法.
 

测试结果:

D:Python>python27 Auto.py
Test GetSize
.Test Resize
.
------------------------------
Ran 2 tests in 0.004s
OK
 

总结:
1。第一步:先写好测试类
2。第二步:导入unittest模块及测试的类,运用setup()方法做测试前的准备工作,如建立数据库连接,运用teardown()方法做测试后的清除工作,如取消数据库的链接,再对类中的方法逐一做测试。
3。第三步: 写suite()的全局方法,将要测试的方法,一一加入。
测试结果,有几个测试用例就有几个. 最后显示OK,表示通过。


python中unittest模块单元测试实例介绍就是这样,欢迎大家参考。。。。

You might also like:

Sidebar