本篇文章给大家谈谈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小时内删除侵权内容。
暂时没有评论,来抢沙发吧~