6、测试用例参数化实现
(1)准备数据
先创建一个Excel表格,里边填写如下数据
| dep_id | dep_nane | master_nane | slogan | expect |
|---|---|---|---|---|
| T1001 | 学院1001 | tester_1001 | slogan1001 | T1001 |
| 学院1002 | tester_1002 | slogan1002 | 400 | |
| T1003 | tester_1003 | slogan1003 | 400 | |
| T1004 | 学院1004 | slogan1004 | 400 | |
| T1005 | 学院1005 | tester_1005 | T1005 |
把Excel表格中的数据准备好之后,放入项目的data目录中即可。注意要把Excel表格存储为.xls格式,兼容性好。
(2)在common目录中编写读取Excel数据的脚本
编写opreation_excel.py脚本如下:
import xlrd
from xlrd import xldate_as_tuple
from datetime import datetime
class OperationExcel:
def __init__(self, filepath):
book = xlrd.open_workbook(filename=filepath)
self.sheet = book.sheet_by_index(0)
def read_excel(self):
rows = self.sheet.nrows
cols = self.sheet.ncols
all_data_list = []
for row in range(1, rows):
data_list = []
for col in range(cols):
ctype = self.sheet.cell(row, col).ctype
cell = self.sheet.cell_value(row, col)
if ctype == 2 and cell % 1 == 0:
cell = int(cell)
elif ctype == 3:
date = datetime(*xldate_as_tuple(cell, 0))
cell = date.strftime("%Y-%m-d %H-%M-%S")
elif ctype == 4:
cell = True if cell == 1 else False # 三目云算法
data_list.append(cell)
all_data_list.append(data_list)
return all_data_list
def get_data_by_dict(self):
keys = self.sheet.row_values(0)
values = self.read_excel()
data_list = []
for value in values:
tmp = zip(keys, value)
data_list.append(dict(tmp))
return data_list
if __name__ == '__main__':
oper = OperationExcel('testdata.xlsx')
# data = oper.read_excel()
data = oper.get_data_by_dict()
print(data)
(3)在script目录中编写测试用例
在script目录中编写test_add_dep_batch.py测试用例。
"""
新增学院接口测试--批量新增
"""
# 测试用例是在unittest框架下编写
import unittest
from interface.add_departments import Add_department # 导入新增学院接口
from common.getKeyword_forResult import GetKeyword # 返回值处理接口
# 步骤1:导入OperationExcel数据读取脚本和ddt模块
from common.opreationexcel import OperationExcel
import ddt
# 步骤2:对OperationExcel进行实例化
# 获得文件对象
oper = OperationExcel("../data/add_dep.xls")
# 获取数据
test_data = oper.get_data_by_dict()
# 测试添加和查询学院的关联型接口
# 步骤3
@ddt.ddt()
class Test_Add_Dep(unittest.TestCase):
def setUp(self) -> None:
self.url = "http://127.0.0.1:8000/api/departments/"
# 实例化Add_department
self.add_dep = Add_department(self.url)
# 开始编写测试用例
# 步骤4
@ddt.data(*test_data)
def test_add_dep_success(self, data): # 步骤5:出入data参数
"""
测试添加学院成功接口
:return:
"""
# 步骤6:准备数据
req_data = {
"data": [
{
"dep_id": data["dep_id"],
"dep_name": data["dep_name"],
"master_name": data["master_name"],
"slogan": data["slogan"]
}
]
}
# 新增学院
response = self.add_dep.add_dep(req_data)
# 获取添加成功后的dep.id
# 步骤7:完成测试逻辑
# 如果添加学院参数请求错误,会出现status_code属性
# 且status_code属性返回400
if "status_code" in response.keys():
res = GetKeyword.get_keyword(response, "status_code")
else:
# 添加学院成功,则获取添加后学院的id
"""
# 因为直接使用该方法相当于又执行了一次添加学院接口
# 所以不能够这样调用
self.add_dep.get_depid(data)
"""
res = GetKeyword.get_keyword(response["create_success"], "dep_id")
# 断言
self.assertEqual(res, data["expect"])
if __name__ == '__main__':
unittest.main()











网友评论