Python+unittest+requests+excel实现接口自动化测试框架

  • 环境:python3 + unittest + requests
  • Excel管理测试用例,
  • HTMLTestRunner生成测试报告
  • 测试完成后邮件发送测试报告
  • jsonpath方式做预期结果数据处理,后期多样化处理
  • 后期扩展,CI持续集成

发送邮件效果:
在这里插入图片描述

项目整体结构:
在这里插入图片描述

common模块代码

class IsInstance:
 
    def get_instance(self, value, check):
        flag = None
        if isinstance(value, str):
            if check == value:
                flag = True
            else:
                flag = False
        elif isinstance(value, float):
            if value - float(check) == 0:
                flag = True
            else:
                flag = False
        elif isinstance(value, int):
            if value - int(check) == 0:
                flag = True
            else:
                flag = False
        return flag
# logger.py
 
import logging
import time
import os
 
 
class MyLogging:
 
    def __init__(self):
        timestr = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
        lib_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '../logs'))
        filename = lib_path + '/' + timestr + '.log'  # 日志文件的地址
        self.logger = logging.getLogger()  # 定义对应的程序模块名name,默认为root
        self.logger.setLevel(logging.INFO)  # 必须设置,这里如果不显示设置,默认过滤掉warning之前的所有级别的信息
 
        sh = logging.StreamHandler()  # 日志输出到屏幕控制台
        sh.setLevel(logging.INFO)  # 设置日志等级
 
        fh = logging.FileHandler(filename=filename)  # 向文件filename输出日志信息
        fh.setLevel(logging.INFO)  # 设置日志等级
 
        # 设置格式对象
        formatter = logging.Formatter(
            "%(asctime)s %(filename)s[line:%(lineno)d]%(levelname)s - %(message)s")  # 定义日志输出格式
 
        # 设置handler的格式对象
        sh.setFormatter(formatter)
        fh.setFormatter(formatter)
 
        # 将handler增加到logger中
        self.logger.addHandler(sh)
        self.logger.addHandler(fh)
 
 
if __name__ == "__main__":
    log = MyLogging().logger
    log.debug("debug")
    log.info("info")
    log.warning("warning")
    log.error("error")
    log.critical("critical")
# operate_excel.py
import xlrd
from xlrd import xldate_as_tuple
import openpyxl
import datetime
 
 
class ExcelData():
    def __init__(self, file_path, sheet_name):
        self.file_path = file_path
        self.sheet_name = sheet_name
        self.workbook = xlrd.open_workbook(self.file_path)
 
        # 获取工作表的内容
        self.table = self.workbook.sheet_by_name(self.sheet_name)
        # 获取第一行内容
        self.keys = self.table.row_values(0)
        # 获取行数
        self.rowNum = self.table.nrows
        # 获取列数
        self.colNum = self.table.ncols
 
    def readExcel(self):
        datas = []
        for i in range(1, self.rowNum):
            sheet_data = []
            for j in range(self.colNum):
                # 获取单元格类型
                c_type = self.table.cell(i, j).ctype
                # 获取单元格数据
                c_cell = self.table.cell_value(i, j)
                if c_type == 2 and c_cell % 1 == 0:
                    c_cell = int
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值