• 单元测试框架 python


    1、为什么要做单元测试

    • 单元测试更细致、更有针对性
    • 单元测试能测试到很多系统测试无法达到的测试
    • 单元测试是在编码中做的测试,发现问题方便修改,而系统测试的问题修改成本可能变高
    • 单元测试是自动化测试

    2、单元测试实例操作

      1、定义一个PC类,里面有div方法

     1 class PC(object):
     2     def add(self, x, y):
     3         return x + y
     4     def ub(self, x, y):
     5         return x - y
     6     def mul(self, x, y):
     7         return x * y
     8     # def div(self, x, y):
     9     #     return x / y
    10     def div(self, x, y):
    11         try: # 错误捕捉
    12             return float(x)/float(y) #将x y转换为浮点型后相除
    13         except:
    14             return None #如果无法转换或不能相除,则返回none
    15 ####################################################################
    16 if __name__ == '__main__':
    17     pc = PC()
    18     print(pc.add(100, 2345))
    19     print(pc.sub(100, 2345))
    20     print(pc.mul(100, 2345))
    21     print(pc.div(100, 4))

      2、创建一个单元测试用例类,继承自unittest.TestCase类 

    1 import unittest
    2 
    3 class MyTestCase(unittest.TestCase):
    4     def test_something(self):
    5         self.assertEqual(True, False)
    6 
    7 if __name__ == '__main__':
    8     unittest.main()

      3、定义setUp,tearDown方法,setUp里面实例化了被测类,并生成一个成员变量 

    1 @classmethod
    2 def setUpClass(cls):
    3 def setUp(self):
    4 def test_01(self): 
    5 ....
    6 def tearDown(self): 
    7 @classmethod 
    8 def tearDownClass(cls): 

      4、写每一个测试用例:一个有效等价类用例、多个无效等价类用例

      5、a)传入不同的参数以调用被测方法;

         b)用断言语句验证返回结果

    3、python单元测试框架原则:

    1. 继承自unittest.TestCase
    2. 以test'开头的方法就是一个测试用例
    3. 每个测试用例执行之前会执行setUp,执行完会执行tearDown
    4. 有一系列的断言语句验证测试结果:assertEqual,assertIn等
    5. setUpClass、tearDownClass:所有用例执行前执行一次setUpClass,后执行一次tearDownClass

    4、单元测试setUp()和tearDown()

    setUp:表示前置条件,它在每一个用例执行之前必须会执行一次 

    setUp可以理解为我们需要自动化测试时,需要打开网页窗口,输入对应测试地址,这一些属于前置条件。

    tearDown:表示释放资源,它在每次用例执行完之后会执行一次

    tearDown可以理解为我们测试完毕后,需要关闭浏览器。

    运行的顺序:

    1. 每次执行函数方法时,必须先执行一次setUp()函数,执行完一个函数方法后,必须再执行一次tearDown()函数

    2. 执行函数的时候有序号时,例如testxx1,testxx2 会根据序号来进行执行

    3. 当函数方法不是以test开头是,不执行该方法。

  • 相关阅读:
    如何正确设置数据库连接池的大小
    spring生命周期
    Spring高级进阶:BeanFactoryPostProcessor
    Spring Bean的生命周期(非常详细)
    表达式求值相关算法
    golang 命令行参数解析 hflag
    golang 标准命令行解析库 flag
    docker consul 环境搭建
    docker etcd 环境搭建
    mysql 事务
  • 原文地址:https://www.cnblogs.com/hereisdavid/p/13584935.html
Copyright © 2020-2023  润新知