Python接口自动化框架设计到开发,赶紧用起来!

1.如何设计一个接口自动化测试框架

根据接口地址、接口类型、请求数据、预期结果来进行设计,对于需要登录后才能进行操作的接口那么则需要进行header cookie等数据的传递,自动化测试的难点就是数据依赖。

2.python操作excel获得内容

  • 首先python操作excel,需要安装两个包,分别是xlrd和xlwt这两个库,xlrd这个库是负责读取excel数据的,而xlwt库是负责向excel写入数据的

图片

  • 在项目目录下创建utils工具包,在该包下创建op_excel.py文件,在该文件中通过导入xlrd包,对excel表的数据进行读取操作

图片

3.重构操作excel函数

  • 根据上一步骤读取excel表的内容代码后,进行了一个简单的封装,提高代码的通用性,过程相当的简单,实现代码如下

图片

  • 运行op_excel.py文件后,结果与封装之前代码结果一致,表示重构封装代码成功

图片

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

4.学习操作json文件

  • 自定义一个登录的json文件名为login.json,文件内容如下,存放在test_data目录下

图片

  • 在utils工具包下创建op_json.py文件,在文件中对login.json文件内容进行读取操作,代码如下

图片

5.重构json工具类

  • 将上一步操作json的代码进行封装

图片

  • 运行op_json.py文件,结果与封装之前代码结果一致,表示重构封装代码成功

图片

6.封装获取常量方法

  • 首先打开excel表格,查看需要获取的字段有哪些

图片

  • 对excel表的字段进行获取,在项目目录下创建名为data的python包,在该包下创建data_conf.py,代码就是简单的获取对应的变量值,具体如下

图片

7.封装获取接口数据

  • 在data目录下创建data_get.py文件,在该文件中对excel表数据以及json数据结合上一步封装的常量方法整合后的实现,代码如下

图片

8.post、get基类的封装

  • 在base包下创建run_method.py文件,在文件中重新编写对get丶post请求方式的代码封装,具体如下

图片

9.主流程封装及错误解决调试

  • 首先在testItems项目目录下新建一个名为main的python包,在该包下创建名为run_test的py文件,该文件为主程序启动文件,代码的逻辑就是将前面封装的方法进行了调用,核心就是读取excel表的数据,通过读取到的数据,发送请求,其中包括某一些变量的判断,根据该判断然后到json数据中获取请求的数据,最后就这么的简单,代码如下

图片

  • 运行run_test,成功的将excel以及json数据正确打印出来,返回res服务器返回结果,需要说明的是excel表中的所有数据都不是真实存在的,包括json文档数据也是,这里主要是测试整个框架的正确性读取excel以及json文档数据,并正确的发送请求获得相应数据

图片

  • 运行结果出现红色的内容,是由requests模块发送请求的安全请求警告,如不想显示此警告,可以在run_method.py发送请求核心代码进行禁用,禁用代码如下

图片

  • 重新运行run_test,安全请求警告不再显示

图片

  • 根据代码运行结果,对比excel表以及json数据文档内容,数据正确无误

图片

10. 返回数据格式处理以及调错

  • 为了测试返回的接口的响应数据,博主这里在excel文档以及json文档中添加了一条数据

图片

  • 因为在excel文档中小说的接口不携带header所以在向接口发送请求数据核心代码块,进行了如下修改,因为在excel文档中的最后一个接口是真实的,所以只需要对最后一个接口url返回的字典类型的响应数据进行转换成json格式的数据,并按照关键字进行排序

图片

  • 运行run_test,在最后一个接口中成功打印出我们想要的数据

图片

11.获取接口返回状态

  • 在发送请求数据核心代码中,进行打印返回的状态码status_code即可,最后一个接口比较特殊,返回的响应数据中没有status_code,所以需要对返回的json数据中的status进行判断,并向其返回数据中添加我们所要的status_code的值

图片

  • 运行代码,当返回的状态码为404表示接口不存在,只要是存在响应数据,则status_code为200,必须说明一点的就是status_code为200不一定表示接口存在,有些大型网站会对其域名下不存在的接口返回200的错误页面显示,所以在测试文档中会体现预期结果和实际结果两项数据需要一致才能表示测试通过

图片

12.通过预期结果判断case是否执行成功

  • 进行接下来的测试,博主这里重新准备了另一个excel表来进行测试,需要对json文件中的数据进行添加,在excel表Book-05中的请求数据book5关键字对应的json文件的数据故意为空,可以对测试结果有一个对比

图片

  • 在数据获取核心类中定义了一个方法来获取excel表模块字段的数据

图片

  • 回过头在启动文件中获取模块名预期结果并进行打印

图片

  • 运行启动文件,查看运行结果

图片

  • 在utils目录下,创建common_util.py文件,在该文件代码中通过启动文件传递过来的数据来判断excel表预期结果数据的status状态码与res结果中的status状态码是否一致,一致表示测试通过,不一致则失败,代码如下

图片

  • 在启动文件中需要注释掉res响应数据,利于查看测试结果,还需要在启动文件调用is_contains方法来根据其返回值判断测试是否通过

图片

  • 运行启动文件,查看测试结果

图片

13.将测试结果写入到excel中

  • 首先在op_excel.py中定义一个方法,该方法实现读取excel的数据,并进行copy复制,然后再write方法将数据写入到坐标位置

图片

  • 然后在data_get.py中需要定义一个方法,在该方法中核心逻辑为获取y坐标的值

图片

  • 最后在启动文件中,调用data_get模块中的write_reality_data方法,并将剩余的x坐标的值以及data数据传递给最终的核心方法write_reality_result_data来完成对excel表中的实际结果数据的写入

图片

  • 将excel表进行关闭后,运行启动文件,再次打开excel表,实际结果数据写入正确,之所以需要关闭excel是避免提示提示错误,无法写入保存数据

图片

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:自动化测试老司机 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/351932.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity架构师进阶:红点系统的架构与设计

面试的时候经常被问道如何来设计一个红点系统,本文将详细地介绍如何设计一个红点系统,有哪些接口,并完整地给出实现。 红点系统的需求分析 首先我们来分析一下红点系统的设计需求: 红点系统严格意义上来说不属于框架,而是游戏逻辑&#xff…

某工业级剪纸包装机辐射整改实例

摘要 某一客户工业级剪纸包装机器出口欧洲需要做CE认证,其中一项需要符合EMC Directive 2004/108/EC里面的EN 61000-6-4:2007,其中就需要符合标准中的辐射发射限值要求。但是,在CE-EMC认证过程中,测试辐射发射出现不合格现象。关键…

设计模式_访问者模式_Visitor

案例引入 要求 测评系统需求:将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(比如 成功、失败 等) 传统方案 Man和Woman里面都有“成功”、“失败”的方法 【分析】 如果系统比较小&…

国民技术N32G430C8开发笔记一-新建IAR工程

一、创建IAR工程 1、新建工程,保存到project文件夹。 2、添加SDK到工程。 根据原厂SDK的文件结构在IAR新建相应分组,把各个文件夹的文件加载进去,其中startup文件选择IAR平台的startup_n32g430_EWARM.s。 3、添加头文件路径&#xff0…

Python编程 从入门到实践(项目二:数据可视化)

本篇为实践项目二:数据可视化。 配合文章python编程入门学习,代码附文末。 项目二:数据可视化 1.生成数据1.1 安装Matplotlib1.2 绘制简单的折线图1.2.1 修改标签文字和线条粗细1.2.2 校正图形1.2.3 使用内置样式1.2.4 使用scatter()绘制散点…

Asp.Net Core 获取应用程序相关目录

在ASP.NET Core中,可以通过以下三种方式获取应用程序所在目录: 1、使用AppContext.BaseDirectory属性: string appDirectory AppContext.BaseDirectory; 例如:D:\后端项目\testCore\test.WebApi\bin\Debug\net6.0\ 2、使用…

IDEA 安装阿里Java编码规范插件

1.File>Settings 2.安装之后重启 开发过程中如果有不符合规范的地方,会自动出现提示

侯捷《C++标准11-14》笔记

P2: 模板编程中的… 模板编程时&#xff0c;“…”表示可以接受任意数量和类型的参数&#xff0c;具有极大的灵活性。函数调用时&#xff0c;参数个数不定会被分解成一包一包的参数传入。从而通过递归把不定个数的参数一一分解。 #include <iostream> using namespace …

vit细粒度图像分类(二)SwinFC 学习笔记

1.摘要&#xff1a; 针对细粒度图像类间差异小、类内差异大等问题&#xff0c;提出了一种基于Swin及多尺度特征融合的模型&#xff08;SwinFC&#xff09;。 基准骨干网络采用具有多阶段层级架构设计的Swin Transformer模型作为全新视觉特征提取器&#xff0c;从中获取局部和全…

【CentOS】Linux 文件权限与权限修改

目录 1、Linux 中的文件属性 2、如何修改文件属性与权限 3、目录权限与文件权限的区别 4、Linux 中的文件扩展名 用户与用户组是Linux文件权限的重要组成部分。 首先&#xff0c;一定要明确用户与用户组的概念&#xff1a; Linux 一般将文件可读写的身份分为三个类别&#…

Redis 击穿、穿透、雪崩产生原因解决思路

大家都知道&#xff0c;计算机的瓶颈之一就是IO&#xff0c;为了解决内存与磁盘速度不匹配的问题&#xff0c;产生了缓存&#xff0c;将一些热点数据放在内存中&#xff0c;随用随取&#xff0c;降低连接到数据库的请求链接,避免数据库挂掉。需要注意的是&#xff0c;无论是击穿…

Qt中Widget样式表实现圆弧边框

第一步 第二步 第三步 第四步 //插入border-radius: 10px; border: 2px solid #000; 效果图

文本分类识别系统Python+卷积神经网络算法+TensorFlow+Django网页界面

一、介绍 文本分类系统&#xff0c;使用Python作为主要开发语言&#xff0c;通过选取的中文文本数据集&#xff08;“体育类”, “财经类”, “房产类”, “家居类”, “教育类”, “科技类”, “时尚类”, “时政类”, “游戏类”, “娱乐类”&#xff09;&#xff0c;基于Te…

8-小程序数据promise化、共享、分包

小程序API Promise化 wx.requet 官网入口 默认情况下&#xff0c;小程序官方异步API都是基于回调函数实现的 wx.request({method: , url: , data: {},header: {content-type: application/json // 默认值},success (res) {console.log(res.data)},fail () {},complete () { }…

云计算中的弹性是什么?

云弹性是指当客户需求增加或减少时&#xff0c;自动从数据中心配置和取消配置资源。这使得云资源(包括计算、存储和内存资源)能够根据需求变化快速重新分配。CPU/处理、内存、输入/输出带宽和存储容量等计算资源可以根据需要增加或减少&#xff0c;而不会影响系统性能。 它旨在…

归并排序和计数排序讲解

. 个人主页&#xff1a;晓风飞 专栏&#xff1a;数据结构|Linux|C语言 路漫漫其修远兮&#xff0c;吾将上下而求索 文章目录 前言归并排序&#xff08;递归&#xff09;动图&#xff1a;代码实现以下是代码详细讲解&#xff1a; 归并排序非递归代码实现以下是代码详细讲解&…

c# cad2016选择封闭多段线获取多段线面积

在C#中&#xff0c;如果你想要通过AutoCAD .NET API来选择封闭多段线内部的其他闭合多段线并计算它们各自的面积&#xff0c;可以遵循以下基本步骤&#xff1a; 1、加载AutoCAD库&#xff1a; 确保你的C#项目引用了Autodesk.AutoCAD.Interop和Autodesk.AutoCAD.Interop.Common…

C语言-预处理

1.C语言的编译过程&#xff1a; 预处理、编译、汇编、链接 gcc -E hello.c -o hello.i 1、预处理 gcc -S hello.i –o hello.s 2、编译 gcc -c hello.s -o hello.o 3、汇编 gcc hello.o -o hello_elf 4、链接 1&#xff1a;预编译…

浅谈WPF之样式与资源

WPF通过样式&#xff0c;不仅可以方便的设置控件元素的展示方式&#xff0c;给用户呈现多样化的体验&#xff0c;还简化配置&#xff0c;避免重复设置元素的属性&#xff0c;以达到节约成本&#xff0c;提高工作效率的目的&#xff0c;样式也是资源的一种表现形式。本文以一个简…

数学建模论文笔记

一、概述 1. 数学建模论文组成 论文电子版&#xff1a;摘要页、正文、参考文献、附录支撑材料&#xff1a;源程序代码以及调用说明、中间结果、支撑数据等首页&#xff1a;论文题目、摘要、关键词论文正文&#xff1a;问题重述、问题分析、模型假设、符号说明、模型建立与求解…