接口测试平台插播: ( Postman 的小bug)

简介: 接口测试平台插播: ( Postman 的小bug)

  不知道大家知不知道一个事情:就是我们在进行测试post请求的时候,见到过字段名是相同的情况,比如:

微信图片_20220704230845.png

这个postman请求体,三个字段都一样,都是a这种情况,我们来看下postman的请求代码生成:

微信图片_20220704230855.png

微信图片_20220704230901.png

postman中,只是忠实的把这个请求体转换成了字典,然后在地下直接通过data=payload的方式传递了出去。

那么这种写法是正确的么?

答案是:

在没有同名字段的时候,是可以的。

但是一旦有同名字段,就不对了。


我们把这段代码复制到pycharm中来详细验证一下:

微信图片_20220704230908.png

注意,还没开始运行,pycharm已经在警告了。我们运行一下看看:

微信图片_20220704230914.png

结果正常显示,但是这是因为本接口是作者随便找的例子,并没有真正的需要字段a,甚至3遍!所以大多数情况下,我们很难去注意到这个细节bug。


   那我们要怎么来验证下呢?答案很简单,我们通过response,来输出它真实的请求体:

微信图片_20220704230920.png

输出:

微信图片_20220704230925.png

可以看到,它的请求体只有一个a,而且等于最后的值3,前面的1 和 2都被抛弃掉了。


我们再来修改请求体测试下:

微信图片_20220704230931.png

再看看结果:

微信图片_20220704230937.png

可以看到,b成功显示来了,但是a仍然只留一个最新的值。

所以这个写法是错误的。

大家不用怀疑了,因为博主今天测试接口,检查数据库的时候发现的这个情况,数据库中只保留了同名字段的最后一次值,所以排查出此问题,源头就是postman的请求代码的bug。


那这里我们要怎么修改,才能让这个a=1 a=2 a=3 b=5 同时当作请求发出去呢?


其实很简单,这里要弄明白,postman为什么会出现这个bug,原因是:很多人平时都会简单的把python中的字典,看作是 json格式。

而postman的开发者显然也这么认为,甚至我们在所有的python-requests的教程中,请求体都是这样字典的格式存在。


但是,这不行! 原因很简单, json允许 同名字段存在!而字典不允许!


所以我们在程序中加上这样一句打印:

微信图片_20220704230942.png

然后就看到了问题所在:

微信图片_20220704230948.png

在这个字典刚写完的时候,实际上已经自动去重了...... a=1 和a=2已经被丢弃了。


那这里我们要怎么修改呢?其实只要找一个新的格式来代替字典即可,它要具备俩种特性:

1.允许同名字段

2.可以被requests成功发出

3.可以让服务器成功解析


那么这种格式是什么?就是多元元组。


说的太多大家也不好理解,直接看代码吧,把格式改成这样:

微信图片_20220704230953.png

怎么样,看着是不是怪怪的,圆圆滚滚的还有点可爱~

直接请求:

微信图片_20220704230958.png

可以看到结果,成功的保存了同名字段a的所有值,并且被requests所认可,因为这是通过response.request.body打印出来的哦~

相关文章
|
3月前
|
存储 测试技术 虚拟化
VMmark 4.0.3 - 虚拟化平台基准测试
VMmark 4.0.3 - 虚拟化平台基准测试
80 0
VMmark 4.0.3 - 虚拟化平台基准测试
|
3月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
650 23
|
4月前
|
安全 前端开发 Linux
Immunity CANVAS Professional 7.27 (macOS, Linux, Windows) - 渗透测试和漏洞利用平台
Immunity CANVAS Professional 7.27 (macOS, Linux, Windows) - 渗透测试和漏洞利用平台
137 3
Immunity CANVAS Professional 7.27 (macOS, Linux, Windows) - 渗透测试和漏洞利用平台
|
5月前
|
SQL 安全 测试技术
2025接口测试全攻略:高并发、安全防护与六大工具实战指南
本文探讨高并发稳定性验证、安全防护实战及六大工具(Postman、RunnerGo、Apipost、JMeter、SoapUI、Fiddler)选型指南,助力构建未来接口测试体系。接口测试旨在验证数据传输、参数合法性、错误处理能力及性能安全性,其重要性体现在早期发现问题、保障系统稳定和支撑持续集成。常用方法包括功能、性能、安全性及兼容性测试,典型场景涵盖前后端分离开发、第三方服务集成与数据一致性检查。选择合适的工具需综合考虑需求与团队协作等因素。
537 24
|
5月前
|
SQL 测试技术
除了postman还有什么接口测试工具
最好还是使用国内的接口测试软件,其实国内替换postman的软件有很多,这里我推荐使用yunedit-post这款接口测试工具来代替postman,因为它除了接口测试功能外,在动态参数的支持、后置处理执行sql语句等支持方面做得比较好。而且还有接口分享功能,可以生成接口文档给团队在线浏览。
211 2
|
7月前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
268 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
6月前
|
存储 JSON API
Python测试淘宝店铺所有商品接口的详细指南
本文详细介绍如何使用Python测试淘宝店铺商品接口,涵盖环境搭建、API接入、签名生成、请求发送、数据解析与存储、异常处理等步骤。通过具体代码示例,帮助开发者轻松获取和分析淘宝店铺商品数据,适用于电商运营、市场分析等场景。遵守法规、注意调用频率限制及数据安全,确保应用的稳定性和合法性。
|
6月前
|
监控 API 开发工具
Socket.IO介绍,以及怎么连接测试Socket.IO接口?
Socket.IO 是一个用于浏览器和服务器间实时双向通信的库,支持低延迟消息传递、跨平台运行及自动重连。文章介绍了其特点与调试需求,并详细说明如何使用 Apifox 工具创建、连接、发送/接收 Socket.IO 事件,以及团队协作和调试技巧。掌握这些技能可提升实时应用开发效率与质量。
|
7月前
|
小程序 测试技术 数据安全/隐私保护
微信公众号接口测试实战指南
微信公众号接口测试是确保系统稳定性和功能完整性的重要环节。本文详细介绍了测试全流程,包括准备、工具选择(如Postman、JMeter)、用例设计与执行,以及常见问题的解决方法。通过全面测试,可以提前发现潜在问题,优化用户体验,确保公众号上线后稳定运行。内容涵盖基础接口、高级接口、微信支付和数据统计接口的测试,强调了功能验证、性能优化、安全保护及用户体验的重要性。未来,随着微信生态的发展,接口测试将面临更多挑战和机遇,如小程序融合、AI应用和国际化拓展。
|
8月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。