一、unittest参数化介绍

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

 

 

 二、paramunittest模块安装

pip install paramunittest

三、示例

1、元组数据实现参数化

import unittest
import paramunittest #p ip 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)

 

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

 

 

2、列表数据实现参数化

import unittest
import paramunittest #p ip 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)

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

 

 

3、字典数据实现参数化

import unittest
import paramunittest #p ip install paramunittest



# 参数化字典类型数据
@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)

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

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

import unittest
import paramunittest #p ip 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)

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

 

原文地址:http://www.cnblogs.com/YouJeffrey/p/16909253.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性