zoukankan      html  css  js  c++  java
  • 12.python的单元测试模块——unittest

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

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

                            例1. widget.py

    class Widget:
        def __init__(self,size=(40,40)):
            self._size=size
        def getSize(self):
            return self._size
        def resize(self,width,height):
            self._size=(width,height)
        def dispose(self):
            pass

                采用手工方式进行单元测试:
    #-*-coding:UTF-8-*-
    #python的测试模块
    from widget import Widget
    class TestWidget:
        def testSize(self):
            expectedSize=(40,40)
            widget=Widget()
            if widget.getSize()==expectedSize:
                print "test [Widget]:getSize works perfected!"
            else:
                print "test [Widget]:getSize doesn't work!"
    
    #测试
    if __name__=='__main__':
        myTest=TestWidget()
        myTest.testSize()


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

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

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

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

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

    使用python的PyUnit测试框架:

    #-*-coding:UTF-8-*-
    from widget import Widget
    import unittest
    class  WidgetTestCase(unittest.TestCase):
        def setUp(self):
            self.widget=Widget()
        def tearDown(self):
            self.widget=None
        def testSize(self):
            self.assertEqual(self.widget.getSize(),(40,40))
    
    #构造测试集
    def suite():
        suite=unittest.TestSuite()
        suite.addTest(WidgetTestCase("testSize"))
        return suite
    #测试
    if __name__=="__main__":
        unittest.main(defaultTest='suite')


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

    python2.1及其以后的版本都将pyUnit作为一个标准模块了,不需要额外下载。

    参考资料http://pyunit.sourceforge.net/pyunit_cn.html

  • 相关阅读:
    C#操作Word打印
    判断文件名是否有效
    Windows系统下的程序开机自启
    Winform应用程序使用自定义的鼠标图片
    C# 操作网络适配器
    Runtime Error! R6025-pure virtual function call
    Winform中跨线程访问UI元素的方法
    C#自定义属性转换类---类型转换器
    获取计算机硬件信息
    获取程序集信息
  • 原文地址:https://www.cnblogs.com/chenjianhong/p/4145132.html
Copyright © 2011-2022 走看看