欢迎光临
我们一直在努力

参数化设计,参数化是什么意思

目标

1.??掌握如何实现参数化

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, 0)self.assertEqual(result, 1) def test_add_03(self): result = add(0, 0)self.assertEqual(result, 0) def test_add(self):test_data = [(1, 1, 2), (1, 0, 1), (0, 0, 0)]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装饰器可以为测试函数的参数进行参数化

# 方式一@parameterized.expand([(1, 1, 2), (1, 0, 1), (0, 0, 0)]) def test_add(self, x, y, expect):pass # 方式二data = [(1, 1, 2), (1, 0, 1), (0, 0, 0)]@parameterized.expand(data)def test_add(self, x, y, expect): pass # 方式三def build_data():return [(1, 1, 2), (1, 0, 1), (0, 0, 0)] @parameterized.expand(build_data) def test_add(self, x, y, expect):pass

示例代码

import unittestfrom parameterized import parameterized # 求 和def add(x, y): return x + y # 构建测试数据def build_data():return [(1, 1, 2), (1, 0, 1), (0, 0, 0)] class TestAdd(unittest.TestCase): @parameterized.expand([(1, 1, 2), (1, 0, 1), (0, 0, 0)]) def test_add_1(self, x, y, vps云服务器 expect):print(“x={} y={} expect={}”.format(x, y, expect)) result = add(x, y)self.assertEqual(result, expect) data = [(1, 1, 2), (1, 0, 1), (0, 0, 0)]@parameterized.expand(data)def test_add_2(self, x, y, expect):print(“x={} y={} expect={}”.format(x, y, expect)) result = add(x, y)self.assertEqual(result, expect) @parameterized.expand(build_data) def test_add_3(self, x, y, expect):print(“x={} y={} expect={}”.format(x, y, expect)) result = add(x, y)self.assertEqual(result, expect)

?

74011745

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。