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模块非常简洁的实现了参数化功能
    • 读者可以通过上述的例子快速实现去理解该模块的含义,欢迎大家留言提出自己是如何应用的
  • 相关阅读:
    BZOJ 2212/BZOJ 3702
    BZOJ 4761 Cow Navigation
    BZOJ 3209 花神的数论题
    BZOJ 4760 Hoof, Paper, Scissors
    BZOJ 3620 似乎在梦中见过的样子
    BZOJ 3940 Censoring
    BZOJ 3942 Censoring
    BZOJ 3571 画框
    BZOJ 1937 最小生成树
    BZOJ 1058 报表统计
  • 原文地址:https://www.cnblogs.com/dream66/p/13286046.html
Copyright © 2011-2022 走看看