zoukankan      html  css  js  c++  java
  • Python模块——unittest 单元测试

    http://catmic27.blog.51cto.com/2517040/946852

     unittest是python单元测试框架,又叫做PyUnit。

    之所以称为框架是它代替开发人员完成了一些调用、IO等与单元测试无直接关系的支撑代码,让开发人员可以专注与测试用例的编写,简化单元测试工作。
     
    单元测试是一种基本的,由开发人员(而不是测试人员)完成的测试,保证一个程序基本单元的正确性。“单元”的概念我个人理解就类似电子设备中的 元器件,一个个元器件(单元)组成了整个电子设备(程序)。而元器件的功能是单一的、确定的,可以在电子设备未完全成型(程序未完全实现)之前对其正确性 进行测试(即单元测试)。同时,这些元器件是独立的,可以方便的更换(高内聚,低耦合,可以任意重构——只要满足前面的单元测试)。所以单元测试是测试驱 动开发、极限编程、敏捷中的重要概念。
     
    一个简单的例子:
     1 #FileName: ut_target.py
     2 class EqualToZero(Exception): pass
     3 class SplitZero(object):
     4     def splitzero(self, num):
     5         if num > 0:
     6             return "num is bigger than zero"
     7         elif num < 0:
     8             return "num is smaller than zero"
     9         else:
    10             raise EqualToZero
    11  
    12  
    13 #FileName: utest.py
    14 from ut_target import SplitZero, EqualToZero
    15 import unittest
    16  
    17 class SzTestCase(unittest.TestCase):
    18     def setUp(self):
    19         print "test start"
    20     def tearDown(self):
    21         print "test stop"
    22     def testSzBig(self):
    23         num = 10
    24         sz = SplitZero()
    25         self.assertEqual(sz.splitzero(num),
    26                          "num is bigger than zero")
    27     def testSzSmall(self):
    28         num = -10
    29         sz = SplitZero()
    30         self.assertEqual(sz.splitzero(num),
    31                          "num is smaller than zero")
    32     def testSzEqual(self):
    33         num = 0
    34         sz = SplitZero()
    35         self.assertRaises(EqualToZero, sz.splitzero, num)
    36  
    37 if __name__ == "__main__":
    38     unittest.main()
    39  
    40 执行python utest.py -v
    41 testSzBig (__main__.SzTestCase) ... test start
    42 test stop
    43 ok
    44 testSzEqual (__main__.SzTestCase) ... test start
    45 test stop
    46 ok
    47 testSzSmall (__main__.SzTestCase) ... test start
    48 test stop
    49 ok
    50  
    51 ----------------------------------------------------------------------
    52 Ran 3 tests in 0.000s
    53  
    54 OK
    unittest基本使用方法
    1.import unittest
    2.定义一个继承自unittest.TestCase的测试用例类
    3.定义setUp和tearDown,在每个测试用例前后做一些辅助工作。
    4.定义测试用例,名字以test开头。
    5.一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。
    6.调用unittest.main()启动测试
    7.如果测试未通过,会输出相应的错误提示。如果测试全部通过则不显示任何东西,这时可以添加-v参数显示详细信息。
     
  • 相关阅读:
    初识Ubuntu 18.04(更换系统头像,截图,sy)
    HDU
    HDU
    进度1
    开课博客
    返回一个整数数组中最大子数组的和
    开学第一节课测试感受
    网页记账本开发四(基本完成)
    网页记账本开发三
    网页记账本开发二
  • 原文地址:https://www.cnblogs.com/lvxiuquan/p/2701152.html
Copyright © 2011-2022 走看看