zoukankan      html  css  js  c++  java
  • 单元测试框架杂记01-->unittest参数化(paramunittest)

    前言

         身材不好就去锻炼,没钱就努力去赚。别把窘境迁怒于别人,唯一可以抱怨的,只是不够努力的自己。
    

    一、unittest参数化介绍

    • 参数化测试用于当需要使用多组不同的测试数据测试同一个方法的时候,及用多组不同的测试数据测试登录模块;
    • unittest参数化是指对一个unittest中的测试方法采用多组数据引入进行测试;
    • 实现unittest参数化的方式有多种,如ddt、paramunittest等。

    二、paramunittest模块安装及应用

    2.1 安装

    pip install paramunittest
    

    2.2 基本实现写法一

    import unittest
    import paramunittest
    
    # 参数化数据两组
    @paramunittest.parametrized(
        ('8','5'),
        ('6','2')
    )
    
    class TestDemo(paramunittest.ParametrizedTestCase):
        def setParameters(self, numa, numb):  # 必备的要写的方法,把参数化传递到测试类中
            self.numa = numa
            self.numb = numb
    
        def test_case(self):
            print('a=%s,b=%s'%(self.numa,self.numb))
            self.assertGreater(self.numa, self.numb)
    
    if __name__ == "__main__":
        unittest.main()
    
    • 上述代码中,不像往常一样继承unittest.TestCase,而是为了实施参数化,测试类继承paramunittest.ParametrizedTestCase这个类
    • setParameters方法把参数化数据进行引入到测试类

    2.3 基本实现写法二

    import unittest
    import paramunittest
    
    @paramunittest.parametrized(
          {'numa': 8, 'numb': 6},
          {'numb': 4, 'numa': 5}
    )
    
    class TestDemo(unittest.TestCase):
        def setParameters(self, numa, numb):
            self.numa = numa
            self.numb = numb
    
        def test_case(self):
            print('a=%s,b=%s'%(self.numa,self.numb))
            self.assertGreater(self.numa, self.numb)
    
    if __name__ == "__main__":
        unittest.main()
    
    • 上述代码中,和往常一样继承unittest.TestCase也可以实现参数化,两者也没有区别;
    • 参数化数据中的{'numa': 8, 'numb': 6},有关键字的时候,就和setParameters()方法中的关键字对应,如果没有,则按默认顺序。

    *** 2.4 参数通过方法传递

    case_datas = [{'numa': 8, 'numb': 6},{'numb': 4, 'numa': 5}]
    
    @paramunittest.parametrized(
        *case_datas
    )
    

    三、小结

    • paramunittest模块非常简洁的实现了参数化功能
    • 读者可以通过上述的例子快速实现去理解该模块的含义,欢迎大家留言提出自己是如何应用的
  • 相关阅读:
    漫谈 C++ 的 内存堆 实现原理
    我发起了一个 .Net 开源 数据库 项目 SqlNet
    谈谈 数据库原理
    论 数据库 B Tree 索引 在 固态硬盘 上 的 离散存储
    论 东坡肉 和 红烧肉 的 区别
    浅谈 操作系统原理
    引子 初识
    P2P Downloader
    利用 MessageRPC 和 ShareMemory 来实现 分布式并行计算
    MessageRPC
  • 原文地址:https://www.cnblogs.com/dream66/p/13286046.html
Copyright © 2011-2022 走看看