接口测试用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.cookie5.日志输出6.如何调试你的程序--借助fiddler按照以上的顺序,我将一一说明我的搞法,因为编码能力有限,所以可能看着很low一、get和postrequests包很好的实现了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[key]+'接口访问成功'15                 split_line()16             list_result.append(f1.content+'||'+key)17             # print f1.read()18         except AssertionError:19             print 'One Error in get'20             pass21     return list_result22 23 24 def main_post(result_list, url_list, param_list, payload_list, note_list, cookies):25     """26     模拟post请求27     :param result_list: 结果字典28     :param url_list: 接口字典29     :param param_list: 入参字典30     :param payload_list: header字典31     :param notelist: 描述字典32     :param cookies: 登录获取的cookie33     :return:填充完成的结果列表34     """35 36     # post这块写的比较low,最好自己搞一个数据结构把它搞定37     for key in range(1, 9):38         a = requests.post(url=url_list[key], data=param_list[key], headers=payload_list[key], cookies=cookies)39         try:40             if a.content:41                 print a.content42                 print note_list[key]+'接口访问成功'43                 split_line()44             result_list.append(a.content+'||'+url_list[key])45         except AssertionError:46             print 'One Error in post'47             pass48     return result_list二、用到的参数以及请求头我用的方法是把这些都存放于一个py文件中,当然也可以使用excel或者xml文件,甚至于使用DB。项目紧急,凑合了一下,这里的数据结构主要为了符合上面封装的函数,直接上代码看吧1 BaseURL = 'https://******.com'  # 测试环境 2 # 使用什么数据结构不重要,关键看实现方法中怎么解析你的测试数据 3 List_interface_get = { 4     BaseURL+'/api/****/****/****?****=1&****=375': '描述' 5 } 6 # 以下是用于post的接口 7 List_interface_post = { 8     1: BaseURL+'/api/****/****/****/****' 9 }10 # 以下是用于post的数据11 List_post_param = {12     1: 'new=222222&old=111111'13 }14 # 以下是post接口的描述,它是干嘛的15 List_post_note = {16     1: '修改密码'17 }18 # 以下是post用到的请求头19 List_post_header= {20     1: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}21 }三、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是不是少了?很容易看出来。写法如下:proxies = {     "http": "http://127.0.0.1:8888",     "https": "http://127.0.0.1:8888"}requests.post(url, proxies=proxies)这样就可以走代理了,除fiddler以外还有charles和burp suite可以使用,具体看个人喜好吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/530195.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dw连接服务器文档类型,dw怎么连接服务器的数据库

dw怎么连接服务器的数据库 内容精选换一换本章节指导您使用MongoDB客户端和Robo 3T工具,通过公网连接副本集实例。用户可以直接操作副本集主节点和备节点。主节点用于读写请求,您可以连接主节点对数据进行读写操作。备节点复制主节点数据,用于…

#控制台大学课堂点名问题_你对大学生活的5大误解!看完我想静静......

开学在即,对于即将走进校园的准大学生们来说,大学都是存在于别人描述中的象牙塔,带有心向往之的美好“滤镜”。在你们正式进入大学校园之前,小编决定,顶锅盖“打假”!带你们打破“滤镜”,用正确…

aix服务器屏幕显示被锁住了,Exceed登录AIX远程桌面的问题

今天用Exceed登录新安装的AIX远程桌面,在ExceedXDMCPBrodcast中可以看到AIX主机,但是尝试访问远程桌面时,无法打开登录界面。查看错误日志/var/dt/Xerrors,发现错误信息如下:XIO: fatal IO error 73 (A connection wit…

axios获取图片显示_Vue.js+axios图片预览以及上传显示进度

在平时项目开发中,我们经常会对文件做一些上传操作,不仅仅要实现基本需求,也要兼顾用户体验,根据自己在工作中遇到的问题谈谈对图片上传的预览以及上传进度的优化。1.搭建项目基于Vue.jsaxios搭建的项目,新建一个Index…

剑盾神秘礼物正在维护服务器,宝可梦剑盾神秘礼物获取途径一览

宝可梦剑盾神秘礼物获取途径一览更新时间:2019-11-09作者:shaoshao宝可梦剑盾神秘礼物获取攻略:活动、礼包以及礼物这系列的东西,想必一定是各位游戏玩家们最为喜爱的一部分了吧。在今日,宝可梦剑盾该款角色扮演类冒险…

httpurlconnect设置中文参数_CNC机床参数的设置及报警解除,赶紧收藏吧!

在三菱CNC的硬件连接检查与设置执行完毕向系统送电后,显示器上的READY绿灯仍然不亮。而且在〔诊断〕――〔报警〕 画面上显示很多报警内容,让初次使用三菱CNC的调试工程师感到困惑。而且三菱CNC的参数多达700余种,哪些是开机时必须设置的呢&a…

createsolidcaret 后 很快就不闪烁了_为什么LED灯会越用越暗?为什么会闪烁?

现在LED灯的制作首先要经过严谨的电脑编程制作,制作好灯板,再进入装配车间的流水线,具体咱们就不再展开了。大家都有这么一个生活经验刚买回来的LED灯,总是特别亮,但是过一段时间后很多灯会变得越来越暗,为…

python最大约数是_python – 找到最大的公约数(赋值错误,我迫切需要你的帮助)

我有一个作业(作业)如下:Write a program which enters two positive integers a and b from thekeyboard. Also write a recursive function for determining the gcd(greatest common divisor) of a and b using Euclid’s algorithm.According to this algorithm…

c#简单记事本应用程序的快捷方式_Windows 10七月更新又翻车,记事本没了

每一次微软更新,总是能引起一篇“哀嚎”,翻车实在太频繁了,让人又爱又恨。近日,微软在本月更新补丁推送上,进行了新的调整,让分预装的应用程序被悄然删除,这导致不少用户只能逐一重新安装。从目…

python我的世界给予物品指令_我的世界指令给予物品 我的世界指令给予物品是多少...

给予物品指令为 /give 人物id 物品id 数量,如果数量不填的话默认是64个。示例:/give AW fire_charge 64 给玩家AW 64个火焰弹。其他指令一览/nick ID 名称 -给某人改一个名 ID是加白名单的名字/backup -运行备份命令/fireball -发射一个火球(会破坏方块)…

db2 空值转换函数_Hive常见函数的使用

hive函数1.关系函数等值比较 语法&#xff1a;AB 如果表达式A和表达式B相等&#xff0c;则为TRUE&#xff1b;否则为FALSE不等值比较 <>语法&#xff1a;A <> B如果表达式A为null&#xff0c;或者表达式B为null&#xff0c;返回null&#xff1b;如果表达式A和表达式…

中级软件测试笔试题100精讲_汇集上千位软件测试精英面试笔试题,最全面的题型都在这!...

知己知彼&#xff0c;才能百战不殆测试员想要在竞争激烈的职场中拥有一席之地&#xff0c;就需要提前做好准备。前人栽树&#xff0c;后人乘凉一次面试就能入职自己心仪的公司&#xff0c;就需要通过“前人”积累的面试题来了解面试官的“套路”&#xff0c;通过不断的优化答案…

学考语言成绩c对高考有影响吗_三大影响!考生务必上心,最近正在进行的学考对升学很重要...

阅读关键词&#xff1a;【填报技巧】【新高考】近日(1月6-8日)&#xff0c;高中生们正在进行2021年1月普通高中学业水平合格性考试(也就是大家普遍说的“学考”&#xff0c;又称“合格性考试”)。学考成绩有哪些用途&#xff1f;跟高考录取到底有什么关系&#xff1f;……今天我…

三次握手和四次挥手图解_TCP三次握手和四次挥手详解

作者&#xff1a;雨点的名字来源&#xff1a;https://www.cnblogs.com/qdhxhz/p/8470997.htmlTCP有6种标示:SYN(建立联机) ACK(确认) PSH(传送) FIN(结束) RST(重置) URG(紧急)一、TCP三次握手第一次握手客户端向服务器发出连接请求报文&#xff0c;这时报文首部中的同部位SYN1…

ubuntu修改新增用户的目录_Linux 用户、用户组添加修改删除(ubuntu、centos)

一、LINUX(UBUNTU/CENTOS)用户添加删除修改1、建用户&#xff1a;adduser web #新建web用户useradd web #添加web 用户passwd web #给web用户设置密码useradd web -g admin -n -m #新建web用户并指定用户组为 admin用户组,并自动建立登录目录passwd web #给web 用户设置密码use…

读excel_基础 | Excel中单元格的引用方式,读这篇就够了!

最近推送了几个Excel中最难的函数&#xff0c;哀嚎遍野&#xff0c;太难了……所以今天我们来“从万丈高楼平地起”的平地讲起&#xff01;搞懂Excel单元格引用方式&#xff0c;是保证公式准确最最基本的条件&#xff01;单元格引用方式整体分三种&#xff1a;相对引用(A1)绝对…

天融信防火墙重置配置_天融信防火墙配置手册

天融信防火墙配置指南一、对象与规则现在大多防火墙都采用了面向对象的设计。针对对象的行为进行的快速识别处理&#xff0c;就是规则。比如&#xff1a;甲想到A城市B地点。由这个行为就可以制定一些规则进行约束&#xff0c;例如&#xff1a;1)用户身份识别&#xff0c;是不是…

32汇编语言程序说明_Linux 汇编语言学习--编译和链接

上次我们提到了汇编语言的两种格式&#xff0c;Intel 和 AT&T 格式&#xff0c;今天讲的是对应两种编译器的一些使用。我们知道&#xff0c;编译器就是一个将一种程序语言翻译成另外一种语言的程序。编译的过程其实共有5个流程&#xff1a;词法分析、语法分析、语义分析和中…

占用系统资源测试_高频性能测试面试题15道

1、解释常用的性能指标名称与具体含义性能测试 通过测试工具模拟多种正常、峰值及异常负载条件来对系统的各项性能指标进行测试。验证软件系统是否能够达到用户提出的性能指标&#xff0c;发现系统中存在的性能瓶颈并加以优化。性能指标分为两个方面&#xff1a;系统指标&#…

ensp1.3.00.100用哪个virtualbox_virtualBox使用 Ubuntu18.0.4

一、视图进入缩放模式&#xff0c;虚拟机上方菜单栏无法显示&#xff1f;热键c&#xff0c;恢复。 热键默认为右边的ctrl键。开启增强功能&#xff1f;打开虚拟机后&#xff0c;点击上方设备-->安装增强功能。虚拟机里面会出现识别到光盘。先挂载光盘到指定路径&#xff1a;…