接口测试平台代码实现43:接口底层请求逻辑

简介: 接口测试平台代码实现43:接口底层请求逻辑

    终于结束了接口调试层的前端编写。来到了后台代码处理。其实就是点击Send按钮,我们调用requests来发送请求,并把返回值显示到调试层的返回体中即可,注意实际中这部分会越来越复杂,内容也会越来越多,本教程目前章节只会实现初始的各种请求难度,后续章节可能会不断完善这块。

   首先打开P_apis.html ,找到调试层的Send按钮:微信图片_20220620123751.png

注意,我们要给这个按钮添加一个onclick函数ts_send(),也就是请求函数。微信图片_20220620123810.png

然后我们去下面的script中找个位置,新建这个函数:微信图片_20220620123819.png好,让我们现在来设计一下这个函数:

首先他要获取这个接口当前所有的数据,用户正在选择的编码格式和请求体。

然后发出请求给后台传递这个接口的所有数据。然后接受到后台返回值后,直接切换到返回体子页面,并把返回值显示到返回体的多行文本框中。

(获取各种接口数据的代码和保存接口的函数中基本相同,所以基本可以直接复制)

好,代码如下:大家直接复制保存函数中的代码即可,但是

要注意修改请求url为/Api_send/,返回值处理方式也做了变更微信图片_20220620123827.png


好,复制完了之后别忘了修改下请求地址。

我们接下来要写好当这个send请求成功后,接收到后端给的返回值就显示在调试层中的代码,也就是这个位置,我们删掉了复制保存函数中刷新页面的代码,取而代之的是:微信图片_20220620123841.png

好了。我们前端目前的改动基本结束了。去开始写后端。

首先是urls.py中写好对照:

微信图片_20220620123852.png

然后去后台新建这个Api_send函数:

微信图片_20220620123901.png

这个Api_send函数的代码仍然可以大部分都复制Api_save保存函数的代码哦~


微信图片_20220620123907.png

我们先没做发送请求的代码,而是先写死了个demo返回值。来测试前端显示返回值的效果如何:

重启服务,刷新页面。点击一下send按钮看看:

微信图片_20220620123913.png

发现已经成功切换到了这个返回值页面了。

(有同学反馈说这个返回值子页面颜色不好看,所以给换了,大家自己也自主设计一下)


这里有个小bug,大家需要跟我一起处理一下。

就是我们无论是发送请求/还是保存接口时,请求体编码格式都保存用户当前所选的子页面。但是如果当用户选的并不是任何一个编码格式,而是返回体子页面的时候,会怎样呢?

答案是报错:

微信图片_20220620123921.png

关于这个问题是属于设计上的漏洞。因为当处于返回体子页面时候,我们系统无法推断出用户到底想保存/请求的是哪种编码格式。所以我们应该不允许用户在返回体页面激活时点击保存或Send按钮。

有的同学会问了,那么假如他想连续发送请求的话,他还需要切换回刚刚的请求体编码格式子页面再点击Send,这样会不会麻烦了一点点。

其实这里我们很少会出现这种操作,毕竟如果返回体成功正确,他就不会再点击Send了,如果不正确,那么八成需要去修改刚刚的请求体,就需要先切回去。不过也有大概率去修改的是url等,而不是修改请求体。所以最好还是可以保存最近一次请求的请求体编码格式和请求体 比较好。这里就涉及到了我们要想办法记住用户上一次选择的请求体编码格式和请求体。

那么这个我们其实可以通过在数据库接口表给他加俩个字段来实现,一个是上次的请求体方式,一次是上次的请求体。

微信图片_20220620123928.png


既然修改了数据库结构,那么就要执行那俩句同步生效的命令了:

不知道有多少人能背着写出来:

微信图片_20220620123936.png

执行成功后,我们切换回P_apis.html中,仔细研究下这个报错是怎么产生的,如何解决:微信图片_20220620123943.png

我们注意到,当用户选择激活的子页面是编码格式的时候,才会定义声明ts_api_body这个变量,那么当选择激活的是返回体子页面时候,自然这个变量不存在,所以报错了。

   那么我们的解决办法就是,当请求体编码格式这个函数微信图片_20220620123951.png

当它为#response的时候,也就是返回体的时候,也就是不是任何一种编码格式的时候。后台要对其进行处理,选用上一次的请求体编码格式和请求体内容来进行再次请求。

所以我们去后台编写ts_send()函数:微信图片_20220620123957.png

我们先加一句print,打印一下看看此时的ts_body_method也就是请求体编码格式的值到底是什么吧?

微信图片_20220620124003.png果然是这三个大字。

然后我们加一个判断:微信图片_20220620124011.png

如上图,只有当ts_body_method为返回体三个字时,就去数据库中找到上次存储的东西。如果是正常请求,那么就保存他们为last的俩个字段。

不过这时,其实还没有完全完成。因为还有一个新的小bug出现了。就是如果用户第一次就直接手动切换到返回体子页面,然后直接点Send怎么办?

我们去获取上次的请求体编码格式和请求体内容时发现 还没有储存,是空的。这时候我们要提醒用户,请先设置好请求体再点击Send即可。


所以继续修改这个函数:微信图片_20220620124017.png

又增加了一层判断。当请求体编码格式为空或者None时,就给他返回这句提示。这句提示会显示在返回体中。

试下效果:微信图片_20220620124024.png

如图,没啥问题了。


请求功能我们解决了这个bug,那么保存功能呢?我们好好设想一下场景:

场景1:用户设置好请求体编码格式和内容后,直接点击保存按钮。这时什么问题都没有,保存成功。

场景2:用户设置好请求体编码格式和内容后,点击Send按钮测试了一下,发现返回体没问题,这时他就会直接点击保存按钮。那么我们的俩个字段数据从哪来呢?当然是上一次的俩个last字段了。因为在他请求的时候,这俩个字段就已经保存了这次的请求体编码格式和内容了。


所以我们找到保存函数,按如下方式更改:(其中的api_name我挪了下位置方便看)微信图片_20220620124032.png

好,让我们来测试一下。

新建了一个接口,然后在form-data中输入几行参数,然后点击Send按钮,等到返回体子页面激活后,我们直接点击保存按钮。弹层自动关闭。我们再打开看看是否保存成了。发现保存成功了,自动切换到了form-data上并且显示了刚刚输入的几行参数。


相关文章
|
2天前
|
算法 Java 测试技术
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
29 13
|
11天前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
56 11
|
29天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
62 1
|
1月前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
46 2
|
1月前
|
人工智能 供应链 安全
AI辅助安全测试案例某电商-供应链平台平台安全漏洞
【11月更文挑战第13天】该案例介绍了一家电商供应链平台如何利用AI技术进行全面的安全测试,包括网络、应用和数据安全层面,发现了多个潜在漏洞,并采取了有效的修复措施,提升了平台的整体安全性。
|
1月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
65 3
|
1月前
|
监控 安全 测试技术
构建高效的精准测试平台:设计与实现指南
在软件开发过程中,精准测试是确保产品质量和性能的关键环节。一个精准的测试平台能够自动化测试流程,提高测试效率,缩短测试周期,并提供准确的测试结果。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
144 1
|
1月前
|
监控 安全 测试技术
构建高效精准测试平台:设计与实现全攻略
在软件开发过程中,精准测试是确保产品质量的关键环节。一个高效、精准的测试平台能够自动化测试流程,提高测试覆盖率,缩短测试周期。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
69 0
|
2月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
80 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
3月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
271 7
Jmeter实现WebSocket协议的接口测试方法