A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我是楠楠 黑马粉丝团   /  2019-9-19 11:57  /  660 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

【郑州校区】参数化
目标
1.  掌握如何实现参数化
1. 参数化
1.1 小需求
需求:定义一个实现加法操作的函数,并对该函数进行测试
示例代码
[AppleScript] 纯文本查看 复制代码
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
[AppleScript] 纯文本查看 复制代码
# 方式一
@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
示例代码
[AppleScript] 纯文本查看 复制代码
import  unittest
from  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,  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)

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马