栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

接口自动化第二版

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

接口自动化第二版

import xlrd
import xlwt
from xlutils import copy
import requests
import json
import logging
from db.SqlHandler import MySqlDb
from log.logHandler import LogHandler


def login():
    url = 'http://124.220.179.221:8081/cms/manage/loginJump.do'
    data = {
        "userAccount": "admin",
        "loginPwd": "123456"
    }
    response = requests.request(method='post', url=url, data=data)
    return response.cookies


Log = LogHandler().log_fun()


class ExcelSet:
    # 专门读写excel

    def __init__(self, login):
        self.excel_path = '../day16/test2.xls'  # 文件名以及路径,如果路径或者文件名有中文给前面加一个r拜师原生字符。
        self.work_book = xlrd.open_workbook(self.excel_path, formatting_info=True)
        self.work_sheet = self.work_book.sheet_by_name('示例')  # 通过名称获取sheet
        self.cookies = login()
        # 拷贝
        self.new_work_book = copy.copy(self.work_book)
        # 打开拷贝的excel 的sheet
        self.new_work_sheet = self.new_work_book.get_sheet(0)

    def read_excel_data(self):
        for row in range(1, self.work_sheet.nrows):
            case_id = self.work_sheet.cell_value(row, 0)  # 行 列
            desc = self.work_sheet.cell_value(row, 1)  #
            url = self.work_sheet.cell_value(row, 2)  #
            method = self.work_sheet.cell_value(row, 3)  #
            header = self.work_sheet.cell_value(row, 4)  #
            data = self.work_sheet.cell_value(row, 5)  #
            setup_sql = self.work_sheet.cell_value(row, 6)  # 前置sql
            teardown_sql = self.work_sheet.cell_value(row, 7)  # 后置sql
            except_result = self.work_sheet.cell_value(row, 8)  # 预期结果
            response_result = self.work_sheet.cell_value(row, 9)  # 实际结果
            except_sql = self.work_sheet.cell_value(row, 10)  # 预期数据库返回的结果
            if not url or not data:
                logging.error(f'用例{case_id},{desc},url或body为空')
                continue

            my_test_case = MyTestCase(case_id, desc, url, method, header, data, except_result, response_result,
                                      self.cookies, setup_sql)
            ret = my_test_case.test_01_cms()
            if ret.get('msg') == eval(except_result).get('msg'):
                # 第一层校验
                logging.info(f'用例{case_id},{desc},第一层校验通过')
                # 第二层校验
                if teardown_sql and except_sql:
                    ret_sql = my_test_case.check_sql(teardown_sql)
                    if ret_sql:
                        assert ret_sql[0][0] == except_sql
                        logging.info(f'用例{case_id},{desc},测试通过!')

                        self.write_excel_data(row, '测试成功')
            else:
                logging.error(f'用例{case_id},{desc},第一层校验失败!!!')
                self.write_excel_data(row, '测试失败')

    def write_excel_data(self, row, msg):
        """
        写入数据
        :return:
        """
        # self.new_work_sheet.write('行下标','列下标','内容')
        #   写入数据 到新的excel里面
        self.new_work_sheet.write(row, 9, msg)
        # 保存excel
        self.new_work_book.save('result.xls')


class MyTestCase:
    my_sql = MySqlDb()

    def __init__(self, case_id, desc, url, method, header, data, except_result, response_result, cookies, setup_sql,
                 ):
        self.base_url = 'http://124.220.179.221:8081'
        self.case_id = case_id
        self.desc = desc
        self.url = url
        self.method = method
        self.header = header
        # self.data = json.loads(data)
        self.data = eval(data)
        self.except_result = except_result
        self.response_result = response_result
        self.cookies = cookies
        self.setup_sql = setup_sql

    def test_01_cms(self):
        self.check_sql(self.setup_sql)
        response = requests.request(method=self.method, url= self.base_url+self.url, data=self.data, cookies=self.cookies)
        return response.json()

    def check_sql(self, sql):
        """
        处理sql
        :return:
        """
        if sql.lower().startswith('select'):
            select_sql = self.my_sql.select_data(sql)
            return select_sql
        elif sql.lower().startswith('delete'):
            del_sql = self.my_sql.del_data(sql)
            return del_sql
        elif sql.lower().startswith('insert'):
            insert_sql = self.my_sql.insert_data(sql)
            return insert_sql

        elif sql.lower().startswith('update'):
            update_sql = self.my_sql.update_data(sql)
            return update_sql
        else:
            logging.error(f'用例{self.case_id},{self.desc}接口,sql语句错误!')


if __name__ == '__main__':
    e = ExcelSet(login)
    e.read_excel_data()

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/962474.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号