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

Python接口自动化测试框架运行原理及流程

本文总结分享介绍接口测试框架开发,环境使用python3+selenium3+unittest+ddt+requests测试框架及ddt数据驱动,采用Excel管理测试用例等集成测试数据功能,以及使用HTMLTestRunner来生成测试报告,目前有开源的poman、Jmeter等接口测试工具,为什么还要开发接口测试框架呢?因接口测试工具也有存在几点不足。

  • 测试数据不可控制。比如接口返回数据不可控,就无法自动断言接口返回的数据,不能断定是接口程序引起,还是测试数据变化引起的错误,所以需要做一些初始化测试数据。接口工具没有具备初始化测试数据功能,无法做到真正的接口测试自动化。
  • 无法测试加密接口。实际项目中,多数接口不是可以随便调用,一般情况无法摸拟和生成加密算法。如时间戳和MDB加密算法,一般接口工具无法摸拟。
  • 扩展能力不足。开源的接口测试工具无法实现扩展功能。比如,我们想生成不同格式的测试报告,想将测试报告发送到指定邮箱,又想让接口测试集成到CI中,做持续集成定时任务。

测试框架处理流程

测试框架处理过程如下:

  • 首先初始化清空数据库表的数据,向数据库插入测试数据;
  • 调用被测试系统提供的接口,先数据驱动读取excel用例一行数据;
  • 发送请求数据,根据传参数据,向数据库查询得到对应的数据;
  • 将查询的结果组装成JSON格式的数据,同时根据返回的数据值与Excel的值对比判断,并写入结果至指定Excel测试用例表格;
  • 通过单元测试框架断言接口返回的数据,并生成测试报告,最后把生成最新的测试报告HTML文件发送指定的邮箱。

测试框架结构目录介绍


目录结构介绍如下:

  • config/: 文件路径配置
  • database/: 测试用例模板文件及数据库和发送邮箱配置文件
  • db_fixture/: 初始化接口测试数据
  • lib/: 程序核心模块。包含有excel解析读写、发送邮箱、发送请求、生成最新测试报告文件
  • package/: 存放第三方库包。如HTMLTestRunner,用于生成HTML格式测试报告
  • report/: 生成接口自动化测试报告
  • testcase/: 用于编写接口自动化测试用例
  • run_demo.py: 执行所有接口测试用例的主程序

接口测试用例的主程序项目地址可以关注文末的公众号免费获取!

以上就是本文的全部内容,希望对大家的学习有所帮助!最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

相关文章:

  • 【leetcode】随机链表的复制
  • Nginx使用—基础应用
  • 图像处理与视觉感知---期末复习重点(1)
  • 如何在Spring Boot框架中打印响应的日志?
  • 【Mining Data】收集数据(使用 Python 挖掘 Twitter 数据)
  • js如何渲染页面
  • [渗透教程]-024-Hashcat密码破解
  • LLM(十一)| Claude 3:Anthropic发布最新超越GPT-4大模型
  • Python 开发图形界面程序
  • 二十五、剖析HashMap
  • 《javascript高级程序设计》学习笔记 | 23.JSON
  • 2024年JSON 面试题目-1
  • LeetCode刷题---填充每个节点的下一个右侧节点指针
  • Linux设置静态IP地址
  • 10个常见的Java面试问题及其答案
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 【附node操作实例】redis简明入门系列—字符串类型
  • export和import的用法总结
  • Spark RDD学习: aggregate函数
  • zookeeper系列(七)实战分布式命名服务
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 算法-插入排序
  • 算法系列——算法入门之递归分而治之思想的实现
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 转载:[译] 内容加速黑科技趣谈
  • 如何在招聘中考核.NET架构师
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​力扣解法汇总946-验证栈序列
  • #android不同版本废弃api,新api。
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (Note)C++中的继承方式
  • (SpringBoot)第二章:Spring创建和使用
  • (二开)Flink 修改源码拓展 SQL 语法
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .NET 5种线程安全集合
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .Net mvc总结
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [AndroidStudio]_[初级]_[修改虚拟设备镜像文件的存放位置]
  • [BT]BUUCTF刷题第4天(3.22)
  • [BT]BUUCTF刷题第9天(3.27)
  • [BZOJ1053][HAOI2007]反素数ant
  • [BZOJ4016][FJOI2014]最短路径树问题