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

接口自动化测试框架

工具层(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.dtcms.com/a/359247.html

相关文章:

  • python pyqt5开发DoIP上位机【自动化测试的逻辑是怎么实现的?】
  • 深度解析Fluss LockUtils类的并发艺术
  • 手写MyBatis第43弹:插件拦截原理与四大可拦截对象详解
  • Agent实战教程:LangGraph结构化输出详解,让智能体返回格式化数据
  • Keil5 MDK_541官网最新版下载、安装
  • offsetof宏的实现
  • 线程池项目代码细节2
  • 互联网医院系统源码解析:如何从零搭建高效的在线问诊平台
  • SNMPv3开发--EngineID安全访问机制
  • 腾讯云的运维笔记——从yum的安装与更新源开始
  • 深入理解 Linux 驱动中的 file_operations:从 C 语言函数指针到类比 C++ 虚函数表
  • centos7中MySQL 5.7.32 到 5.7.44 升级指南:基于官方二进制包的原地替换式升级
  • 有个需求:切换车队身份实现Fragment的Tab隐藏显示(车队不显示奖赏)
  • SNMPv3开发--简单使用
  • 【Linux基础】深入理解Linux环境下的BIOS机制
  • Python - 机器学习:从 “教电脑认东西” 到 “让机器自己学规律”
  • 项目管理和产品管理的区别
  • docker,mysql安装
  • vector的学习和模拟
  • 揭秘表格推理的“思维革命”:RoT模型介绍
  • 【机器学习基础】机器学习中的容量、欠拟合与过拟合:理论基础与实践指南
  • Vue生命周期、工程化开发和脚手架、组件化开发
  • 学习日志41 python
  • 打工人日报#20250830
  • 内网后渗透攻击--跨域攻击
  • 给某个conda环境安装CUDA 12.4版本 全局CUDA不变
  • Mybatis 动态sql
  • 【树形数据结构】李超线段树 (Li-Chao Tree)
  • 【深度学习新浪潮】有没有什么方法可以将照片变成线描稿,比如日式漫画的那种?
  • 嵌入式学习日记(38)HTTP