单元测试框架杂记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模块非常简洁的实现了参数化功能
  • 读者可以通过上述的例子快速实现去理解该模块的含义,欢迎大家留言提出自己是如何应用的
posted @ 2020-07-11 23:11  蓝寅  阅读(398)  评论(0编辑  收藏  举报