关于post测试接口数据的信息

网友投稿 226 2023-01-19


本篇文章给大家谈谈post测试接口数据,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享post测试接口数据的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

接口测试实战教学--apipost

前面post测试接口数据的示例中,post测试接口数据我们都是在单一接口中填入不同的请求header、query、body参数。但在实际项目中,对于一批接口,往往具有相同的请求参数。此时,我们可以利用全局参数或者目录参数实现。

例如:常见的token令牌参数,假使我们请求项目下的任何接口都需要在header带上token参数,那么我们当然可以每个接口的header参数都写一个token,但是这样的话十分不利于后期维护、修改。

我们打开全局参数管理器,在全局header除填上token参数:

那么我们每次发送接口,都会在请求header中自动带上该参数:

全局query和全局body的使用方法跟全局header类似,不再赘述。

目录参数的作用和全局参数雷同,只是作用域不一样,B目录下的接口不会使用同级的A目录的目录参数作为发送参数。

我们可以通过 编辑目录 进行目录参数的填写:

那么我们每次发送该目录下的接口,都会在请求header中自动带上该参数:

当全局参数、目录参数、接口中都使用post测试接口数据了同一个参数时,最终会按照以下优先级读取参数值:

单个接口 目录参数 全局参数

如上面的示例,如果全局参数、目录参数、接口中都定义post测试接口数据了header参数token:

全局参数:token值为:698d51a19d8a121ce581499d7b701668 // 最低优先级

目录参数:token值为:b50e345cc9febd86dedecc551ebcc505 // 其次优先级

单接口参数:token值为:a1a9db893bb8a28ccb665d2af54d9417 // 最高优先级

那么最终发送的token值为:a1a9db893bb8a28ccb665d2af54d9417

Jmeter接口测试01-GET和POST请求

jmeter启动后的界面如下:

1、先创建一个线程组。鼠标右键点击“测试计划”,依次选择添加-线程(用户)-线程组,如下:

2、给线程组取名为“单接口测试”(名称自定义即可)。

注:命名后保存才能生效。

3、添加HTTP请求。鼠标右键“单接口测试”,依次点击添加-取样器-HTTP请求,如下:

4、GET方式请求接口。比如访问百度,配置如下:

5、发送接口请求,查看接口响应结果。

在发送请求之前先添加一个监听器“察看结果树”,为了查看接口响应结果。鼠标右键点击“单接口测试”,依次选择添加-监听器-察看结果树,如下:

点击发送按钮,生成结果树: 

查看结果树,点击结果树节点,显示Response body信息:

至此,使用jmeter完成了一个GET方式的请求。

首先禁用或删除GET请求接口,鼠标右键“HTTP GET请求”(不禁用或删除也行,独立的接口之间不影响,只是点击发送按钮时,会把所有启用的接口都执行。这里为了方便,选择禁用。):

清除结果树,点击清除按钮或清除全部按钮:

1、如之前操作,添加一个HTTP请求,并命名为HTTP POST请求:

2、配置POST请求信息:

3、发送请求,并查看结果树:

至此,使用jmeter完成了一个POST方式的请求。

apipost-- 接口流程化测试

流程测试是针对一个接口集合的测试post测试接口数据,选择相应的环境,可以作为一系列请求一起运行。

当您想要自动化API测试时,流程测试非常有用。

点击开始,接口集合会并发的像服务器发出请求,最后会按照定义好的测试校验模块给出测试结果。

创建一个流程测试需要如下步骤post测试接口数据

流程测试界面如下图:

通过点击接口名称查看请求的请求和响应参数信息。

接口测试requests.post方法中data与json参数区别

「这个问题困扰我好久了,我经常分不清,今天刚好趁着这个机会,来总结下。」

1.先看一下requests的源码:

「为了一探究竟,我们先看看源码里面怎么说的。」

不要看到英文就发怵,这东西最开始都是老外发明的。不要怕,跟着我一块硬着头皮啃就是了。

源码其实已经说的很明白了。对于data来说我们可以传入Dictionary, list of tuples, bytes, or file-like object ,对于json我们就只能传入json型的数据。

「切记:对于python字典和json虽然长得看起来一样,但是序列化格式还是有区别的。」  很多同学容易搞混淆,这个大家一定要记住。

看完源码,好像是理解了,好像又没有理解。怎么办,去网上找找有没有人详细分析过。

2.来看看我搜索到的答案:

NO.1

「为了加深对该知识点的理解,我也在网上做了一些搜索。」  我感觉说的挺不错的,摘录于此。

这个是通过提交请求的角度来说的,思路挺好。

NO.2

「再来看下面这一条:」

https://blog.csdn.net/liudinglong1989/article/details/104604626

感觉是不是总结的挺好,并且作者还给了验证。但是,说到但是就说明此事有转折哦。

NO.3

「我又搜到了这个:」

https://www.cnblogs.com/yanlin-10/p/9820694.html

「注意一下,上面的两个说法有点冲突。」  而且两者都有举例。这就麻烦了,到底谁说的是对的呢。我们找点权威的资料来看看吧。

3.再回过头来看源码:

「怎么办?对了,还是看源码。」  下面就让我们一点一点来拆解。打开编辑器,一步步切进源码看看。

步骤1

注意,这里用的是pycharm编辑器。

步骤2

步骤3

步骤4

步骤5

步骤6

终于切到能解答我们疑问的地方了。 「你可能会问,你是怎么找到这里的,我也不知道,这个目前也是凭着自己的感觉来找,不一定对,希望读者朋友们保持质疑的态度来看我的文章。」

这里说到,当data是None而Json不为None时,content_type就是application/json类型。后面那个基于各种条件下之后(就是没有json,然后也不满足七七八八的条件),最后会出现content_type = 'application/x-www-form-urlencoded'的情况(这块有点模糊,记录个TODO)。

敲重点喽

至于为什么上面的说法不一致,大概是因为他们都是通过实践发现:当传入的数据为data且data为字符串类型时,在控制台打印的requests.header里content_type='text/plain'。

「我仔细看了,发现他们都是基于Django下做的例子。这样貌似有一定的不合理之处。」  为什么呢?  「因为当我使用requests进行接口操作的时候,我用的是这个库的东西,它自己默认了一套规则。 当你用Django来证明这个结论时,Django框架很可能又结合自己的一套东西默认了一些东西。」  所以我看到上图NO.2的作者特别说明了下:

大概是作者也蒙了,本来想证明呢,突然发现出现了结果和人家requests库里说的不一致的情况,但又无法解释。

通过这一路的分析,我来总结一下。在requests中  「body体里面放入数据,一般要么以json的方式传入,要么是以data的方式传入。 未指定content_type时,以data的方式传入数据content_type = 'application/x-www-form-urlencoded',以json的方式传入数据content_type ='application/json'。」  也就是说上图NO.2的作者是对的,NO.3的作者说法欠妥。 「当然有一点我们要清楚这是requests库这样实现的。」

你会发现我用了很多可能、大概的词语,因为我个人能力,目前还没有能力把Django和requests库研究的很深,我也没法和这些大牛联系问清楚。 「但有一点是清楚的,两者不一致是正常的,并不是完全一样的东西。」

4.再来看下官方文档的举例吧

你看,关于这个问题我也是翻了好多资料,想找找证据。 「前几天特意去读了读官方文档,没有什么特殊的发现。」  也就是在写这篇文章的时候,我突然发现我有点理解了,就这样开窍了,高兴了一小会儿。

「原文链接在此:」

https://docs.python-requests.org/en/master/user/quickstart/#more-complicated-post-requests

5.最后的总结

总而言之,记住这句话:用data参数提交数据时,request.body的内容则为a=1b=2的这种形式,用json参数提交数据时,request.body的内容则为'{"a": 1, "b": 2}'的这种形式。

6. 再说说我的想法

当我们在开发测试的时候,其实要传入什么样类型的数据其实已经定好了,不会有那么多纠结的。 「之所以我会有这样的疑惑,也是因为对自己的不自信,既然源码里已经说了,为什么还不敢果断的下结论,我还需要修炼哦,加油!」

7.其它的收获

「当我们传入数据的时候,可以使用不同的content_type,根据自己的需求即可。」  这是我在写这篇文章的时候学到的,链接放这里,回头忘记的时候多来看看。

https://zhuanlan.zhihu.com/p/202978890

https://imququ.com/post/four-ways-to-post-data-in-http.html
借鉴自:我去吹吹风 https://www.mdnice.com/writing/75b1900ec1824ba6ad3a5851a3bd876f

post接口每次一条

一:接口测试过程中GET请求与POST请求的主要区别
从开发角度我们看get与post的主要区别是:1.Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据;2.Get安全性比Post低:Get将表单中数据的按照key=value的形式,添加到action(动作或者说操作)所指向的url后面,并且两者使用“?”连接,而各个变量之间使用 “”连接;Post是将表单中的数据放在form的数据体中,按照键值对方式,传递到action所指向url;3.Post传输的数据量大,可以达到2M,而Get方法由于受到URL长度(跟浏览器和操作系统相关)的限制,只能传递大约1024字节.
从上面分析我们可知:get请求键值对都在url后面,我们按照规则可以直接在浏览器上操作,当然也可以直接借助接口测试工具进行操作,对于post请求,我们则需要借助接口测试工具,可能也有人说我可以直接在前端页面上进行测试,举一个例子,比如:在一个输入框中,输入一个0-100的整数,我们用-1,0,100,10.1,12.33,103这些测试用例进行测试,发现-1,10.1,12.33,103都不合适,前端对一些不合格的都进行了限制,但是有一天-1这个值,写入了数据库,人家不是从页面输入的,原来是做后端开发的人员不严谨造成的。这时候你就会发现利用接口测试工具有多方便了。
二:POST接口实战文件上传
找了好些接口,没有遇到满意的,在这里我使用特斯汀学院的TP商城来进行举例。
登录接口测试流程:
1.打开浏览器输入登录页面网址:http://www.testingedu.com.cn:8000/Home/user/login.html,由于浏览器F12调试模式抓取不到我想要的接口,所以利用抓包工具Charles抓取登录接口,通过抓取发现抓取的为html页面,所以Overview中Content-Type:text/html; charset=UTF-8。重点查看Contents栏中Headers中Content-Type信息、Query String Parameters(对应Charles中Contents栏中Form信息)、Response信息。

2.打开Postman,新建Request,输入url,选择POST方法等,在Body中选择x-www-form-urlencoded,填写Form里面对应的键值对,发送请求,查看结果,结果中有Unicode编码格式的,可以在网上搜索进行中文转换。


3.测试几条数据查看最后结果与预期结果作对比。经过测试发现username,password,verify_code都必不可少,手机号码要符合规则。

文件上传接口实例:在Postman中Body选择form-data,选择file格式,键为file,选择图片即可。每次发送请求需要重新上传图片,没有保存图片功能。 关于post测试接口数据和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 post测试接口数据的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、post测试接口数据的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:使用SpringBoot整合ssm项目的实例详解
下一篇:科技企业研发管理平台(研发管理平台软件)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~