美文网首页
『居善地』接口测试 — 15.接口自动化测试框架实现(四)

『居善地』接口测试 — 15.接口自动化测试框架实现(四)

作者: 繁华似锦Fighting | 来源:发表于2021-01-12 20:55 被阅读0次

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()

相关文章

网友评论

      本文标题:『居善地』接口测试 — 15.接口自动化测试框架实现(四)

      本文链接:https://www.haomeiwen.com/subject/kloeaktx.html