Unittest单元测试框架之unittest的第三方库paramunittest参数化基础及应用

一、unittest参数化介绍

参数化测试用于当需要使用多组不同的测试数据测试同一个方法的时候
paramunittest是unittest实现参数化的一个专门的模块,可以传入多组参数,自动生成多个用例
实现unittest参数化的方式有多种,如ddt、paramunittest等

Unittest单元测试框架之unittest的第三方库paramunittest参数化基础及应用_第1张图片

 二、paramunittest模块安装

pip install paramunittest

三、示例

1、元组数据实现参数化

import unittest
import paramunittest # pip install paramunittest


# 参数化元组类型数据
@paramunittest.parametrized(
    (20,30,50),
    (30,40,70),
    (60,80,140)
)

class TestDemo(paramunittest.ParametrizedTestCase):

    def setParameters(self, numa,numb,result): # 把参数化传递到测试类中
        self.a = numa
        self.b = numb
        self.c = result

    def test_add_case(self):
        print("%d+%d=%d" % (self.a,self.b,self.c) )
        self.assertEqual(self.a+self.b, self.c)


if __name__ == '__main__':
    unittest.main(verbosity=2)

执行以上代码,测试结果如下:

Unittest单元测试框架之unittest的第三方库paramunittest参数化基础及应用_第2张图片

2、列表数据实现参数化

import unittest
import paramunittest # pip install paramunittest


# 参数化列表类型数据
@paramunittest.parametrized(
    [20,30,50],
    [30,40,70],
    [60,80,140]
)

class TestDemo(paramunittest.ParametrizedTestCase):

    def setParameters(self, numa,numb,result): # 把参数化传递到测试类中
        self.a = numa
        self.b = numb
        self.c = result

    def test_add_case(self):
        print("%d+%d=%d" % (self.a,self.b,self.c) )
        self.assertEqual(self.a+self.b, self.c)


if __name__ == '__main__':
    unittest.main(verbosity=2)

执行以上代码,测试结果如下:

Unittest单元测试框架之unittest的第三方库paramunittest参数化基础及应用_第3张图片

3、字典数据实现参数化

import unittest
import paramunittest # pip install paramunittest



# 参数化字典类型数据(字典中的key要和setParameters方法中的形参一致)
@paramunittest.parametrized(
    {"numa":20,"numb":30,"result":50},
    {"numa":30,"numb":40,"result":70},
    {"numa":60,"numb":80,"result":140}
)


class TestDemo(paramunittest.ParametrizedTestCase):

    def setParameters(self, numa,numb,result): # 把参数化传递到测试类中
        self.a = numa
        self.b = numb
        self.c = result

    def test_add_case(self):
        print("%d+%d=%d" % (self.a,self.b,self.c) )
        self.assertEqual(self.a+self.b, self.c)


if __name__ == '__main__':
    unittest.main(verbosity=2)

执行以上代码,测试结果如下:

Unittest单元测试框架之unittest的第三方库paramunittest参数化基础及应用_第4张图片

4、参数通过函数或者数据对象传入实现参数化

import unittest
import paramunittest # pip install paramunittest


# # 参数化:数据对象
# testdata = [
#     {"numa":20,"numb":30,"result":50},
#     {"numa":30,"numb":40,"result":70},
#     {"numa":60,"numb":80,"result":140}
#             ]
# # 参数化类型数据
# @paramunittest.parametrized(
#     *testdata
# )

# 参数化:函数
def get_data():
    return [{"numa":20,"numb":30,"result":50},
            {"numa":30,"numb":40,"result":70},
            {"numa":60,"numb":80,"result":140}]
# 参数化类型数据
@paramunittest.parametrized(
    *get_data()
)


class TestDemo(paramunittest.ParametrizedTestCase):

    def setParameters(self, numa,numb,result): # 把参数化传递到测试类中
        self.a = numa
        self.b = numb
        self.c = result

    def test_add_case(self):
        print("%d+%d=%d" % (self.a,self.b,self.c) )
        self.assertEqual(self.a+self.b, self.c)


if __name__ == '__main__':
    unittest.main(verbosity=2)

执行以上代码,测试结果如下:

Unittest单元测试框架之unittest的第三方库paramunittest参数化基础及应用_第5张图片

实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

Unittest单元测试框架之unittest的第三方库paramunittest参数化基础及应用_第6张图片

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!!

你可能感兴趣的:(unittest,单元测试,单元测试,python,java)