当前位置: 首页 > backend >正文

接口自动化测试框架

工具层(tools)
路径管理工具handle_path
  • 该文档定义了项目关键路径配置脚本,通过 os和 time库动态生成项目根目录、测试数据路径、图片路径、测试报告目录等核心路径,并创建时间戳格式的测试报告名称。
  • os​​:操作系统交互库,用于路径操作

  1. os.path.dirname():获取父目录路径

  2. os.path.join():智能拼接路径

  3. os.path.abspath(__file__):获取当前文件的绝对路径

  • ​time​​:时间处理库

  1. time.strftime():格式化时间戳

  2. time.localtime():获取本地时间

import osimport time#项目根目录,其中os.path处理文件和目录路径,dirname返回路径的目录部分,不包含文件名;abspath返回指定文件绝对路径;__file__当前执行文件;
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#日志目录
log_name = time.strftime("%Y%m%d",time.localtime())
log_dir_name = os.path.join(base_dir,"logs",f"{log_name}.log")#测试数据的路径,join拼接多个路径,生成完整路径;
data_dir = os.path.join(base_dir,"test_data","case_data.xlsx")#图片地址
image_dir = os.path.join(base_dir,"images","song.png")#测试用例文件目录
case_dir = os.path.join(base_dir,"test_cases")#测试报告名称
report_name = time.strftime("%Y%m%d_%H%M%S",time.localtime())#测试报告目录
report_dir = os.path.join(base_dir,"reports")#历史报告目录
history_report_dir = os.path.join(base_dir,"reports","history")
excel测试用例读取工具handle_excel
  • 定义了一个名为 HandleExcel的类,提供加载 Excel 文件、读取指定 sheet 页的测试用例数据(返回字典列表)、关闭文件的方法。​
  • ​openpyxl​:load_workbook:加载 Excel 工作簿

  • iter_rows(values_only=True):读取单元格数据(直接获取值而非单元格对象)

  • ​​__init__(self, file_name):初始化方法:加载 Excel 文件,获取所有 sheet 名称列表

  • ​​​​get_excel_test_cases(self, sheet_name)
  1. 根据 sheet 名称获取工作表对象:sheet_obj = self.wb_obj[sheet_name]

  2. 读取表头和数据行:datas = list(sheet_obj.iter_rows(values_only=True))

  3. 返回字典列表格式的测试用例数据

  4. 将每行数据与表头组合成字典:dict(zip(case_title, case))

  • close_file(self)​:关闭 Excel 文件:self.wb_obj.close()

模块/类 方法/属性 使用场景描述
openpyxl load_workbook() 加载指定的 Excel 文件,返回一个 Workbook 对象。
Workbook 对象 .sheetnames(属性) 获取 Excel 文件中所有 Sheet 的名称列表。
[sheet_name](通过键访问) 根据 Sheet 名称获取对应的 Worksheet 对象。
.iter_rows(values_only=True) 按行迭代 Sheet 中的数据,values_only=True 表示返回单元格的实际值。
.close() 关闭 Excel 文件,释放资源。
Python 内置函数 list() 将迭代器(如 iter_rows 的结果)转换为列表。
zip() 将表头和数据按列组合,生成键值对。
dict() 将 zip 生成的键值对转换为字典,形成单条用例数据。
list 对象 .append()

将单条用例数据(字典)追加到结果列表中。

 
from openpyxl import load_workbookclass HandleExcel:def __init__(self,file_name):  #file_name: 测试用例文件名称(绝对路径)self.wb_obj = load_workbook(filename=file_name) #load_workbook加载excel#获取所有excel中sheet的名称self.sheet_names = self.wb_obj.sheetnamesdef get_excel_test_cases(self,sheet_name):  #sheet_name: excel中sheet名称#临时变量存放数据cases_list = []  #获取指定表单对象sheet_obj = self.wb_obj[sheet_name]#iter_rows迭代所有行数据,按行读取封装成list输出结果类似于[('id','title'),(1,'登陆成功')],values_only是False返回对象,True返回单元格对应数据,datas获取表单sheet中所有数据datas = list(sheet_obj.iter_rows(values_only=True))#获取表头case_title = datas[0] #获取表数据case_datas  = datas[1:] #遍历每一行数据for case in case_datas:#zip(key,val)把两个元素压缩在一起,再把每一行数据使用dict转换成字典类型,zip函数是python的内置函数result = dict(zip(case_title,case))cases_list.append(result)self.close_file()return cases_listdef close_file(self):#关闭excelself.wb_obj.close()  if __name__ == '__main__':#存放excel测试数据的文件名(放本目录下的路径)cl = HandleExcel(file_name="case_data.xlsx",sheet_name="login")cl.get_excel_test_cases()
全局属性管理器handle_attribute

全局属性管理器,存储接口返回的全局变量

class HandleAttr:pass
手机号生成工具handle_phone
  • 定义了一个名为 HandlePhone的类,提供生成随机手机号并通过数据库查询验证其唯一性(确保未注册)的方法。

  • Faker:用于生成随机手机号

  • 通过 tools.handle_db.mysql模块操作数据库(执行 SQL 查询)

  1. __init__(self): 初始化一个Faker对象

  2. __check_phone(self, phone): 私有方法,用于检查手机号是否已存在于数据库的用户表中

  3. get_phone(self): 使用Faker库循环生成随机手机号,直到生成一个数据库中不存在的手机号,然后返回

from faker import Faker
from tools.handle_db import mysqlclass HandlePhone:def __init__(self):self.fk 
http://www.xdnf.cn/news/19184.html

相关文章:

  • jumpserver
  • 虚幻基础:角色动画
  • 【Linux】系统部分——软硬链接动静态库的使用
  • Spring Cloud Gateway 网关(五)
  • java字节码增强,安全问题?
  • MySQL-事务(上)
  • 【分享】如何显示Chatgpt聊天的时间
  • 用Git在 Ubuntu 22.04(Git 2.34.1)把 ROS 2 工作空间上传到全新的 GitHub 仓库 步骤
  • 系统质量属性
  • Git 安装与国内加速(配置 SSH Key + 镜像克隆)
  • 设置word引用zotero中的参考文献的格式为中文引用格式或中英文格式
  • 电子战:Maritime SIGINT Architecture Technical Standards Handbook
  • Linux之Shell编程(三)流程控制
  • 深度学习重塑医疗:四大创新应用开启健康新纪元
  • 深度学习系列 | Seq2Seq端到端翻译模型
  • Ansible Playbook 调试与预演指南:从语法检查到连通性排查
  • Qt QML注册全局对象并调用其函数和属性
  • 针对 “TCP 连接中断 / 终止阶段” 的攻击
  • PostgreSQL 灾备核心详解:基于日志文件传输的物理复制(流复制)
  • LINUX-网络编程-TCP-UDP
  • 【光照】[光照模型]发展里程碑时间线
  • 拆解《AUTOSAR Adaptive Platform Core》(Core.pdf)—— 汽车电子的 “基础技术说明书”
  • 无网络安装来自 GitHub 的 Python 包
  • More Effective C++ 条款18:分期摊还预期的计算成本(Amortize the Cost of Expected Computations)
  • 构建坚不可摧的数据堡垒:深入解析 Oracle 高可用与容灾技术体系
  • 开发中使用——鸿蒙CoreSpeechKit让文字发声
  • 基于SpringBoot的电脑商城系统【2026最新】
  • 【C++】第二十七节—C++11(下) | 可变参数模版+新的类功能+STL中一些变化+包装器
  • Gray Code (格雷码)
  • 【机器学习入门】4.1 聚类简介——从“物以类聚”看懂无监督分组的核心逻辑