post请求测试工具(python怎么做接口测试工具)

2026-01-30 02:30:01 0

post请求测试工具(python怎么做接口测试工具)

大家好,关于post请求测试工具很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于python怎么做接口测试工具的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

本文目录

python怎么做接口测试工具

之前使用过urllib和urllib2做接口测试,在做的途中,感觉使用urllib2直接进行的get,post 请求并没有那么好用。作为测试人员,所需要的测试工具应当以方便为第一要务,测试的耗时只要是真正的无人值守,耗时不是太久的都可以接受。所以,本人又尝试了一个新的包:requests。  

Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。Requests 的哲学是以 PEP 20 的习语为中心开发的,所以它比 urllib 更加 Pythoner。更重要的一点是它支持 Python3 !推荐一篇文章,上面有该包的详细说明 传送门,以下只会写到我用到的部分,所以更多的了解需要自己去搜资料

好了,我们开始吧!!

接口测试中重要的部分:

1.get和post方法

2.用到的参数

3.请求头

4.cookie

5.日志输出

6.如何调试你的程序--借助fiddler

按照以上的顺序,我将一一说明我的搞法,因为编码能力有限,所以可能看着很low

一、get和post

requests包很好的实现了post和get方法,示例:

1 import requests2 response_get = requests.get(url, data, headers, cookies)3 response_post = requests.post(url, data, headers, cookies)

其他的访问方式如put,head等等,用法几乎都是如此,因为没用到,所以省略

现在一般的接口返回值有页面和json俩种,按照需求,可以分别使用response.text或者response.content获取,text获取的是unicode类型的返回值,而content返回值是str类型,所以我一般使用content来获取返回值,因为这样获取的返回值可以直接使用正则或者in的方式来验证返回值结果是否正确。

我自己为了实现接口的自动访问,所以又在requests上面加了一层封装,就像下面这样:

1 def main_get(list_result, cookies): 2     """ 3     用于模拟get请求,返回结果 4     :param list_result:空列表,用于存储结果 5     :param cookies: 登陆后的cookie 6     :return:访问结果 7     """ 8     # List_interface_get写在接口文件里,文件是py格式,然而它本身是字典类型 9     for key in List_interface_get:10         try:11             f1 = requests.get(key, cookies=cookies)12             if f1:13                 print f1.content14                 print List_interface_get)45         except AssertionError:46             print ’One Error in post’47             pass48     return result_list

二、用到的参数以及请求头

我用的方法是把这些都存放于一个py文件中,当然也可以使用excel或者xml文件,甚至于使用DB。项目紧急,凑合了一下,这里的数据结构主要为了符合上面封装的函数,直接上代码看吧

***隐藏网址***

三、cookie

一款产品的接口测试中必定会使用登录状态,需要使用cookie实现,之前写过使用cookiejar获取cookie,requests中获取cookie的方法更为简单,不过首先你得知道是哪个接口set了cookie,不过一般是登录啦。登录接口访问之后set了cookie,那好,就去调用登录接口,然后拿到搞回来的cookie:

# 只需要这样!!login = requests.post(login_url, data=login_data, headers=login_header)
cookie = login.cookies

这个cookie就是登录状态了,拿着随便用,需要登录的就直接cookies=cookies

四、日志输出

这里注意看第二步中接口数据,有接口描述,也有接口是啥,第一步中又把content做成返回值了,具体拼接方式自己想吧,东西全有了,想写啥写啥,还可以加上获取本地时间的api获取接口运行时间,log文件该长啥样是门学问,这里就不献丑了。

五、借用fiddler调试你的脚本

requests允许使用代理访问,这有啥用,真有!fiddler是一款截包改包的工具,而且通过扩展可以进行请求间的比对,这样让你的程序访问的请求和真正正确的请求作对比,为啥我的程序访问出错?是不是缺了请求头?参数是不是丢了?cookie是不是少了?很容易看出来。写法如下:

***隐藏网址***
requests.post(url, proxies=proxies)

这样就可以走代理了,除fiddler以外还有charles和burp suite可以使用,具体看个人喜好吧。

什么测试工具可以压力测试HTTPS POST的

什么测试工具可以压力测试HTTPS POST的

  • 《?php defined(’SYSPATH’) or die(’No direct script access.’);

  • /**

  • ***隐藏网址***

  • ***隐藏网址***

  • * Add Support HTTP/1.1 by Default

  • * Only Support Connection Close Mode

  • *

  • * @author     anthony 

  • */

  • class Http {

  • /**

  • * @var  array  default header options

  • */

  • public static $default_options = array (

  • ’User-Agent’=》 ’Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4’,

  • ’Connection’=》 ’Close’ //Need to close the request every time for HTTP 1.1

  • );

  • /**

  • * return Array lines of headers

  • * Overwrite by $options

  • *

  • * @param Array $options, key value pairs of Header options

  • * @return Array,Array line of headers

  • */

  • private static function getHeaders($options){

  • if ($options === NULL) {

  • // Use default options

  • $options = self::$default_options;

  • } else {

  • //Merge the $options with $default_options, if the value set in $options,

  • //Value in $default_options will be overwrite

  • $options =$options + self::$default_options ;

  • }

  • $headers = array();

  • foreach($options as $k=》$v){

  • $headers = $k.’: ’.$v;

  • }

  • return $headers;

  • }

  • /**

  • ***隐藏网址***

  • * may be used.

  • *

  • ***隐藏网址***

  • * @param   array    Header options

  • * @param   array $data Get Param

  • * @param   array &$reponse header, if Assigned,the response header will be populated

  • *

  • * @return  string, Raw String of Http body

  • */

  • public static function get($url, array $options = NULL,$data = NULL,&$response_header = NULL) {

  • $headers = self::getHeaders($options);

  • ***隐藏网址***

  • ’method’ =》 ’GET’,

  • //Defautl HTTP 1.1 and with Connection Close

  • ’protocol_version’=》’1.1’

  • ));

  • if ($options!== null) {

  • ***隐藏网址***

  • }

  • if($data){

  • ***隐藏网址***

  • }

  • $ctx = stream_context_create($params);

  • $fp = fopen($url, ’rb’, false, $ctx);

  • if (!$fp) {

  • throw new Exception("Connection failed: $url");

  • }

  • if($response_header !== NULL){

  • $response_header = stream_get_meta_data($fp);

  • }

  • $response = stream_get_contents($fp);

  • if ($response === false) {

  • throw new Exception("Reading data Failed: $url");

  • }

  • fclose($fp);

  • return $response;

  • }

  • /**

  • * Post with request options and data 

  • *

  • * @param String url, FULL url

  • * @param Array $options , key=》value pairs array

  • * @param Array $data ,Post Data pairs

  • * @param   array &$reponse header, if Assigned,the response header will be populated

  • *

  • * @return  string, Raw String of Http body

  • */

  • public static function post($url,  $options = null,$data=NULL,&$response_header = NULL) {

  • //Restricted the Form formate

  • if(is_array($data)){

  • ***隐藏网址***

  • }

  • $options = ’application/x-www-form-urlencoded’;

  • $options = strlen($data);

  • ***隐藏网址***

  • ’method’ =》 ’POST’,

  • ’content’ =》 $data

  • ));

  • $headers = self::getHeaders($options);

  • ***隐藏网址***

  • $ctx = stream_context_create($params);

  • $fp = fopen($url, ’rb’, false, $ctx);

  • if (!$fp) {

  • throw new Exception("Connection Failed: $url ");

  • }

  • if($response_header !== NULL){

  • $response_header = stream_get_meta_data($fp);

  • }

  • $response = stream_get_contents($fp);

  • if ($response === false) {

  • throw new Exception("Reading data failed: $url");

  • }

  • fclose($fp);

  • return $response;

  • /**

  • * Inflate zipped content

  • *

  • * @param String $_content, gzipped content

  • *

  • * @return String, Inflated content

  • */

  • public static function inflate($_content){

  • //deflate add 10 charaters before inflate format and 8 charaters checksum append

  • //gzdecode is not availible for ALL PHP even gzencode is avalible

  • $_content = substr($_content, 10,-8); 

  • return gzinflate($_content);

  • }

  • /**

  • * Check if the reponse content is zipped from response header

  • *

  • * @param Array $_response_header, Response header captured from get/post

  • *

  • * @return Boolean, True for zipped contented

  • */

  • public static function isZipped($_response_header){

  • if (preg_grep(’/^Content-Encoding:\s*gzip/’,$_response_header)){

  • return TRUE;

  • }else{

  • return False;

  • }

  • }

  • ***隐藏网址***

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方式的请求。

关于post请求测试工具到此分享完毕,希望能帮助到您。

post请求测试工具(python怎么做接口测试工具)

本文编辑:admin

更多文章:


网站搭建招标方案(网站建设投标书怎么写)

网站搭建招标方案(网站建设投标书怎么写)

“网站搭建招标方案”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看网站搭建招标方案(网站建设投标书怎么写)!本文目录网站建设投标书怎么写网站建设方案包括哪些内容网站建设方法电子商务网站建设方案范文招标流程及注意事项~烟台网站

2025年8月24日 14:45

cpu script是什么意思(script是什么意思)

cpu script是什么意思(script是什么意思)

本篇文章给大家谈谈cpu script是什么意思,以及script是什么意思对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录script是什

2025年10月19日 07:00

he agreed to help(用need to do sth.和agree to do sth. 造句)

he agreed to help(用need to do sth.和agree to do sth. 造句)

各位老铁们,大家好,今天由我来为大家分享he agreed to help,以及用need to do sth.和agree to do sth. 造句的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我

2026年8月31日 01:00

instr函数的返回值(关于vb中InStr函数的一个小问题)

instr函数的返回值(关于vb中InStr函数的一个小问题)

今天给各位分享关于vb中InStr函数的一个小问题的知识,其中也会对关于vb中InStr函数的一个小问题进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录关于vb中InStr函数的一个小问题关于vb instr函

2026年1月26日 22:30

slcp是什么意思(matlab.*和matlab. s有什么区别)

slcp是什么意思(matlab.*和matlab. s有什么区别)

大家好,如果您还对slcp是什么意思不太了解,没有关系,今天就由本站为大家分享slcp是什么意思的知识,包括matlab.*和matlab. s有什么区别的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录matlab

2026年1月3日 12:00

db2数据库update后想恢复(你好,SQL修改错了,修改前没有备份,请问怎么还原到修改前的数据,你知道吗可以给联系方式我请教一下)

db2数据库update后想恢复(你好,SQL修改错了,修改前没有备份,请问怎么还原到修改前的数据,你知道吗可以给联系方式我请教一下)

大家好,关于db2数据库update后想恢复很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于你好,SQL修改错了,修改前没有备份,请问怎么还原到修改前的数据,你知道吗可以给联系方式我请教一下的知识点,相信应该可以解决大家的一

2026年9月17日 12:00

在线转换器人民币($1.8换算成人民币等于多少)

在线转换器人民币($1.8换算成人民币等于多少)

大家好,在线转换器人民币相信很多的网友都不是很明白,包括$1.8换算成人民币等于多少也是一样,不过没有关系,接下来就来为大家分享关于在线转换器人民币和$1.8换算成人民币等于多少的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开

2026年5月23日 09:45

python速成(想学python有什么建议)

python速成(想学python有什么建议)

大家好,关于python速成很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于想学python有什么建议的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录想

2025年10月21日 19:30

assert python用法(python:assert_raises() 怎么用啊,有哪些参数 请说得详细些,先谢谢了!)

assert python用法(python:assert_raises() 怎么用啊,有哪些参数 请说得详细些,先谢谢了!)

大家好,今天小编来为大家解答以下的问题,关于assert python用法,python:assert_raises() 怎么用啊,有哪些参数 请说得详细些,先谢谢了!这个很多人还不知道,现在让我们一起来看看吧!本文目录python:ass

2026年7月11日 08:30

中国学术网官网首页(中国知网如何查外文文献)

中国学术网官网首页(中国知网如何查外文文献)

大家好,今天小编来为大家解答以下的问题,关于中国学术网官网首页,中国知网如何查外文文献这个很多人还不知道,现在让我们一起来看看吧!本文目录中国知网如何查外文文献教师论文发布在哪个网站中国知网如何查外文文献中国知网如何查外文文献如下:1、在知

2026年8月12日 09:15

尚德机构是正规培训吗(尚德机构是正规培训吗)

尚德机构是正规培训吗(尚德机构是正规培训吗)

大家好,今天小编来为大家解答以下的问题,关于尚德机构是正规培训吗,尚德机构是正规培训吗这个很多人还不知道,现在让我们一起来看看吧!本文目录尚德机构是正规培训吗尚德机构正规吗尚德教育真的是骗子吗尚德机构是正规的吗尚德机构怎么样尚德机构是否真的

2026年3月24日 12:15

在我们当中中文版下载(如何下载在我们之中超多职业)

在我们当中中文版下载(如何下载在我们之中超多职业)

本篇文章给大家谈谈在我们当中中文版下载,以及如何下载在我们之中超多职业对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录如何下载在我们之中超多职业《AmongUs在我们之中》配置要求一览如何下载在我们之中超多职业直接在百度里搜索

2026年9月14日 16:45

this is it歌词好诡异(Turn The Lights On的歌词翻译)

this is it歌词好诡异(Turn The Lights On的歌词翻译)

今天给各位分享Turn The Lights On的歌词翻译的知识,其中也会对Turn The Lights On的歌词翻译进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录Turn The Lights On的

2025年7月26日 02:30

tabletennis安卓游戏(table tennis touch多人游戏时提示game center断开链接怎么解决)

tabletennis安卓游戏(table tennis touch多人游戏时提示game center断开链接怎么解决)

各位老铁们好,相信很多人对tabletennis安卓游戏都不是特别的了解,因此呢,今天就来为大家分享下关于tabletennis安卓游戏以及table tennis touch多人游戏时提示game center断开链接怎么解决的问题知识,

2025年8月8日 17:15

周杰伦什么时候出专辑(周杰伦的第一张专辑是什么时候)

周杰伦什么时候出专辑(周杰伦的第一张专辑是什么时候)

大家好,周杰伦什么时候出专辑相信很多的网友都不是很明白,包括周杰伦的第一张专辑是什么时候也是一样,不过没有关系,接下来就来为大家分享关于周杰伦什么时候出专辑和周杰伦的第一张专辑是什么时候的一些知识点,大家可以关注收藏,免得下次来找不到哦,下

2026年4月8日 15:00

cad三维制图入门教程(cad初学者怎么入门)

cad三维制图入门教程(cad初学者怎么入门)

各位老铁们好,相信很多人对cad三维制图入门教程都不是特别的了解,因此呢,今天就来为大家分享下关于cad三维制图入门教程以及cad初学者怎么入门的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录cad初学者怎么入门

2026年8月15日 23:45

迷你qq头像(2021头像可爱呆萌男生,寻找一些头像小男孩的那种)

迷你qq头像(2021头像可爱呆萌男生,寻找一些头像小男孩的那种)

这篇文章给大家聊聊关于迷你qq头像,以及2021头像可爱呆萌男生,寻找一些头像小男孩的那种对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录2021头像可爱呆萌男生,寻找一些头像小男孩的那种手机QQ如何设置隐形头像有什么好看的Q

2026年2月14日 13:00

微信上墙源码(如何制作微信墙)

微信上墙源码(如何制作微信墙)

今天给各位分享如何制作微信墙的知识,其中也会对如何制作微信墙进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录如何制作微信墙微信墙怎么做微信墙的运行原理微信墙的制作方法微信墙PHP源码在哪下载微信上墙!如何制作微

2026年1月12日 04:45

楷体字是什么样的?楷书可以分为哪几种

楷体字是什么样的?楷书可以分为哪几种

今天给各位分享楷体字是什么样的的知识,其中也会对楷体字是什么样的进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录楷体字是什么样的楷书可以分为哪几种什么是楷书楷书是常见的字体,四大楷体分别指的是什么楷体怎么写楷书

2025年8月8日 20:15

write的过去式和ing形式(初一所有动词的过去式)

write的过去式和ing形式(初一所有动词的过去式)

大家好,write的过去式和ing形式相信很多的网友都不是很明白,包括初一所有动词的过去式也是一样,不过没有关系,接下来就来为大家分享关于write的过去式和ing形式和初一所有动词的过去式的一些知识点,大家可以关注收藏,免得下次来找不到哦

2026年4月15日 04:15

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索