Unittest-参数化

1、参数化

1.1 小需求

需求:定义一个实现加法操作的函数,并对该函数进行测试
import unittest

# 求和
def add(x, y):
	return x+y

class TestAdd(unittest.TestCase):
	def test_add_01(self):
		result = add(1, 1)
		self.assertEqual(result, 2)

	def test_add_02(self):
		result = add(1, 2)
		self.assertEqual(result, 3)

	def test_add_03(self):
		result = add(1, 3)
		self.assertEqual(result, 4)

	def test_add(self):
		test_data = [(1,1,2),(1,2,3),(1,3,4)]
		for x,y,expect in test_data:
			print("x={} y={} expect={}".format(x, y, expect))
			result = add(x, y)
			self.assertEqual(result, expect)


# 发现问题
	1、一条测试数据定义一个测试函数,代码冗余度太高
	2、一个测试函数种测试多条数据,最终只会有一个测试结果

1.2 参数化

通过参数的方式来传递数据,从而实现数据和脚本分离。并且可以实现用例的重复执行。 
unittest测试框架,本身不支持参数化,但是可以通过安装unittest扩展插件parameterized来实现。

# 安装
pip install parameterized

# 使用方法
导包:from parameterized import parameterized
使用@parameterized.expand装饰器可以为测试函数的参数进行参数化


# 为什么要参数化?
	解决冗余代码问题
# 什么是参数化?
	说明:根据需求动态获取参数并引用的过程
# 参数化应用场景
	场景:解决相同业务场景,不同测试数据问题


import unittest
from parameterized import parameterized

"""
    目标:parameterized 插件应用
    步骤:
        1. 导包 from parameterized import parameterized
        2. 修饰测试函数 @parmeterized.expand(列表类型数据)
        3. 在测试函数中使用变量接收,传递过来的值。
        
    语法:
        1. 单个参数:值为列表
        2. 多个参数:值为列表嵌套元组 如:[(1,2,3),(2,3,4)]
"""


# 定义测试类 并 继承
class Test01(unittest.TestCase):
    # 单个参数使用方法
    # @parameterized.expand(["1", "2", "3"])
    # def test_add_one(self, num):
    #     print("num:", num)

    # 多个参数使用方法 写法1
    # @parameterized.expand([(1, 2, 3), (3, 0, 3), (2, 1, 3)])
    # def test_add_more(self, a, b, result):
    #     print("{}+{}={}:".format(a, b, result))

    # data = [(1, 2, 3), (3, 0, 3), (2, 1, 3)]
    # 写法2
    # @parameterized.expand(data)
    # def test_add_more(self, a, b, result):
    #     print("{}+{}={}:".format(a, b, result))


    # 写法 3 推荐
    def get_data(self):
        return [(1, 2, 3), (3, 0, 3), (2, 1, 3)]

    @parameterized.expand(get_data())
    def test_add_more(self, a, b, result):
        print("{}+{}={}:".format(a, b, result))


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炫酷的腿毛!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值