Python自动单元测试框架

http://tech.ddvip.com   2007年03月30日    社区交流

本文详细介绍Python自动单元测试框架

  if __name__ == "__main__":
  unittest.main()

  使用main()方法来实施测试的例子如例8所示,

  例8. main_runner.py
from 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 testSize(self):
    self.assertEqual(self.widget.getSize(), (40, 40))
  def testResize(self):
    self.widget.resize(100, 100)
    self.assertEqual(self.widget.getSize(), (100, 100)) 
# 测试
if __name__ == "__main__":
  unittest.main()    

  要执行该单元测试,可以使用如下命令:

[xiaowp@gary code]$ python main_runner.py

  测试类WidgetTestCase中的所有测试方法都将被自动执行,但如果只想执行testSize()方法,可以使用如下命令:

[xiaowp@gary code]$ python main_runner.py WidgetTestCase.testSize

  如果在单元测试脚本中定义了TestSuite,还可以指定要运行的测试集。使用-h参数可以查看运行该脚本所有可能用到的参数:

[xiaowp@gary code]$ python main_runner.py -h

  为了使单元测试更具亲合力,PyUnit软件包中还提供了一个图形界面测试脚本unittestgui.py,将其复制到当前目录后,可以执行下面的命令来启动该测试工具,对main_runner.py脚本中的所有测试用例进行测试:

[xiaowp@gary code]$ python unittestgui.py main_runner

  该测试工具动行时的界面如图1所示:

  图1. 图形测试工具

  单击Start按钮可以开始执行所有测试用例,测试结果将如图2所示:

  图2 测试结果

  使用图形界面可以更好地进行单元测试,查询测试结果也更加方便。PyUnit对于没有通过的测试会进行区分,指明它是失败(failure)还是错误(error),失败是被assert类方法(如assertEqual)检查到的预期结果,而错误则是由意外情况所引起的。

  四、小结

  测试是保证软件质量的关键,新的软件开发方法要求程序员在编写代码前先编写测试用例,并在软件开发过程中不断地进行单元测试,从而最大限度地减少缺陷(Bug)的产生。软件单元测试是XP方法的基石,测试框架为程序员进行单元测试提供了统一的规范,Python程序员可以使用PyUnit作为软件开发过程中的自动单元测试框架。

责编:豆豆技术应用

正在加载评论...