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


Posted in Python onNovember 30, 2020

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

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

测试框架处理流程

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

测试框架处理过程如下:

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

测试框架结构目录介绍

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

目录结构介绍如下:

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

接口测试用例的主程序GitHub项目地址:https://github.com/yingoja/DemoAPI

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现清屏的方法
Apr 30 Python
Python实时获取cmd的输出
Dec 13 Python
Python中如何优雅的合并两个字典(dict)方法示例
Aug 09 Python
在cmd命令行里进入和退出Python程序的方法
May 12 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
May 24 Python
Python numpy.array()生成相同元素数组的示例
Nov 12 Python
python 图像平移和旋转的实例
Jan 10 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
May 07 Python
Python+pyplot绘制带文本标注的柱状图方法
Jul 08 Python
Python 数据分析之逐块读取文本的实现
Dec 14 Python
用Python可视化新冠疫情数据
Jan 18 Python
python套接字socket通信
Apr 01 Python
Django数据模型中on_delete使用详解
Nov 30 #Python
Django数据统计功能count()的使用
Nov 30 #Python
Python常用断言函数实例汇总
Nov 30 #Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
Nov 30 #Python
Django 用户认证Auth组件的使用
Nov 30 #Python
python tqdm库的使用
Nov 30 #Python
Python+unittest+DDT实现数据驱动测试
Nov 30 #Python
You might like
PHP的FTP学习(四)
2006/10/09 PHP
PHP类继承 extends使用介绍
2014/01/14 PHP
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
Yii2创建控制器(createController)方法详解
2016/07/23 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
javascript获取当前ip的代码
2009/05/10 Javascript
jquery实现点击TreeView文本父节点展开/折叠子节点
2013/01/10 Javascript
JavaScript实现动画打开半透明提示层的方法
2015/04/21 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
javascript实现动态表头及表列的展现方法
2015/07/14 Javascript
原生js配合cookie制作保存路径的拖拽
2015/12/29 Javascript
基于vue开发微信小程序mpvue-docs跳转页面功能
2019/04/10 Javascript
Vue注册组件命名时不能用大写的原因浅析
2019/04/25 Javascript
详解JWT token心得与使用实例
2019/08/02 Javascript
NodeJS实现一个聊天室功能
2019/11/25 NodeJs
vue+element-ui表格封装tag标签使用插槽
2020/06/18 Javascript
vue实现下载文件流完整前后端代码
2020/11/17 Vue.js
用Python抢过年的火车票附源码
2015/12/07 Python
python制作小说爬虫实录
2017/08/14 Python
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
Flask数据库迁移简单介绍
2017/10/24 Python
使用Python处理BAM的方法
2018/09/28 Python
python下PyGame的下载与安装过程及遇到问题
2019/08/04 Python
安装PyInstaller失败问题解决
2019/12/14 Python
Pyorch之numpy与torch之间相互转换方式
2019/12/31 Python
Python3运算符常见用法分析
2020/02/14 Python
python如何停止递归
2020/09/09 Python
python实现定时发送邮件到指定邮箱
2020/12/23 Python
Merrell迈乐澳大利亚网站:购买户外登山鞋
2017/05/28 全球购物
Helly Hansen工作服美国官方网上商店:为最恶劣的环境
2019/09/04 全球购物
c/c++某大公司的两道笔试题
2014/02/02 面试题
2014年廉洁自律承诺书
2014/05/26 职场文书
劳模事迹材料范文
2014/12/24 职场文书
python利用while求100内的整数和方式
2021/11/07 Python
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
2022/06/14 Golang
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android