• unittest参数化(paramunittest)


    1. 前言
    unittest参数化是指对一个unittest中的测试方法采用多组数据引入进行测试;
    常用的参数化方法有ddt、paramunittes

    2. 传入的参数类型
    传入的参数类型可以是元组,列表,字典,对象,函数

    3.实现方法
    需要导入unittest,paramunittest,通过@paramunittest.parametrized装饰器传给调用者
    3.1. 实现方法1:通过继承paramunittest.ParametrizedTestCase类执行案例
    传入元组数据

    import unittest
    import paramunittest
    
    #传入的是元组数据
    @paramunittest.parametrized(
        (3,3),
        (7,4)
    ) 
    
    class TestDemo(paramunittest.ParametrizedTestCase):#通过继承paramunittest.ParametrizedTestCase类执行测试案例
        def setParameters(self,numa,numb): #通过setParameters方法接收装饰器传递过来的参数
            self.numa = numa
            self.numb = numb
        def test_case(self):
            print('%s和%s两个数进行比较'%(self.numa,self.numb))
            self.assertGreater(self.numa,self.numb)
    
    if __name__ == '__main__':
        unittest.main()
    

    传入列表数据

    import unittest
    import paramunittest
    
    #参数类型是列表
    @paramunittest.parametrized(
        [3,3],
        [7,4]
    )
    
    class TestDemo(paramunittest.ParametrizedTestCase):
        def setParameters(self,numa,numb):
            self.numa = numa
            self.numb = numb
        def test_case(self):
            print('%s和%s两个数进行比较'%(self.numa,self.numb))
            self.assertGreater(self.numa,self.numb)
    
    if __name__ == '__main__':
        unittest.main()
    

    传入字典数据

    import unittest
    import paramunittest
    
    #参数类型字典
    @paramunittest.parametrized(
        {'numa' : 4,'numb' : 3},
        {'numa' : 9,'numb' : 8}
    )
    
    
    class TestDemo(paramunittest.ParametrizedTestCase):
        '''前面定义的是字典,那参数就跟前面字典的key保持一致'''
        def setParameters(self,numa,numb):
            self.numa = numa
            self.numb = numb
        def test_case(self):
            print('%s和%s两个数进行比较'%(self.numa,self.numb))
            self.assertGreater(self.numa,self.numb)
    
    if __name__ == '__main__':
        unittest.main()
    

    传入对象,注意,装饰器传递参数的时候需要在对象前加个*

    import unittest
    import paramunittest
    
    #参数类型是个对象
    test_data = [{'numa' : 4,'numb' : 3},{'numa' : 9,'numb' : 8}]
    @paramunittest.parametrized(
        *test_data #传递对象需要加个*
    )
    
    class TestDemo(paramunittest.ParametrizedTestCase):
        def setParameters(self,numa,numb):
            self.numa = numa
            self.numb = numb
        def test_case(self):
            print('%s和%s两个数进行比较'%(self.numa,self.numb))
            self.assertGreater(self.numa,self.numb)
    
    if __name__ == '__main__':
        unittest.main()
    

    传入函数,注意,装饰器传递参数的时候需要在方法前加个*

    import unittest
    import paramunittest
    
    #通过函数传入测试参数
    def testdata():
        return [{'numa' : 4,'numb' : 3},{'numa' : 9,'numb' : 8}]
    
    @paramunittest.parametrized(
        *testdata()
    )
    
    class TestDemo(paramunittest.ParametrizedTestCase):
        '''前面定义的是字典,那参数就跟前面字典的key保持一致'''
        def setParameters(self,numa,numb):
            self.numa = numa
            self.numb = numb
        def test_case(self):
            print('%s和%s两个数进行比较'%(self.numa,self.numb))
            self.assertGreater(self.numa,self.numb)
    
    if __name__ == '__main__':
        unittest.main()
    

    3.2. 实现方法2:通过继承unittest.TestCase类执行案例

    import unittest
    import paramunittest
    
    #通过函数传入测试参数
    def testdata():
        return [{'numa' : 4,'numb' : 3},{'numa' : 9,'numb' : 8}]
    
    @paramunittest.parametrized(
        *testdata()
    )
    
    class TestDemo(unittest.TestCase):
        def setParameters(self,numa,numb):
            self.numa = numa
            self.numb = numb
        def test_case(self):
            print('%s和%s两个数进行比较'%(self.numa,self.numb))
            self.assertGreater(self.numa,self.numb)
    
    if __name__ == '__main__':
        unittest.main()
    
  • 相关阅读:
    Python 操作 MySQL 的5种方式
    ffiddler抓取手机(app)https包
    Git远程操作详解(clone、remote、fetch、pull、push)
    Mysql学生课程表SQL面试集合
    Python获取list中指定元素的索引
    python找出字典中value最大值的几种方法
    python sort、sorted高级排序技巧
    JMeter之BeanShell常用内置对象
    Docker从容器拷贝文件到宿主机或从宿主机拷贝文件到容器
    编程必备基础知识|计算机组成原理篇(10):输入输出设备
  • 原文地址:https://www.cnblogs.com/ritaliu/p/13345180.html
Copyright © 2020-2023  润新知