茅侃侃

之前使用过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可以使用,具体看个人喜好吧。

接口测试用python怎么做_请问一下python怎么做接口测试工具?相关推荐

  1. 有没有必要买python课_请问自学 Python 有必要买课程吗?

    既然说到了找工作,那肯定是要去培训班的. 网上优质.实用的免费课程有很多,但都是基础教程,真正能找到Python正式程序员水平的课程,根本没有! 那些高赞回答中的教程中高阶部分,也是收费教程!或者看书 ...

  2. python人工智能图像识别_人工智能之Python人脸识别技术,人人都能做识别!

    原标题:人工智能之Python人脸识别技术,人人都能做识别! 作者丨Python小哥哥 https://www.jianshu.com/p/dce1498ef0ee 一.环境搭建 1.系统环境 Ubu ...

  3. 适合做python的视频_为什么说python适合做入门语言?老男孩Python视频

    什么是Python?Python为什么会变得如此受欢迎呢?Python对于初学者非常友好,同时具备功能强大.容易上手的优势,应用领域广泛,让大家对它越来越关注了,今天老男孩教育就为大家详细的介绍一下P ...

  4. python定义数组大小_请问在python数组要先定义长度吗?

    视情况而定 若数组是追加一个元素的可以不用定义长度: 若初始化一个列表然后要修改其中的值的话,就要定义长度了. 例: 拓展资料 设计定位 Python的设计哲学是"优雅".&quo ...

  5. python大气校正_什么情况下需要做大气校正之探讨

    经常会遇到这样的问题:什么情况需要做大气校正产生?这个问题取决于传感器和应用目标,总的来说,如果要做光谱分析,那么大气校正是必须要做的.本文对于在什么情况下选择什么样的大气校正方法,给出了一些依据. ...

  6. python求加速度_如何利用Python 为自然语言处理加速度

    自去年发布 Python 的指代消解包(coreference resolution package)之后,很多用户开始用它来构建许多应用程序,而这些应用与我们最初的对话应用完全不同. 利用 spaC ...

  7. python查询最高分_精通 Oracle+Python,第 1 部分:查询最佳应践

    作者:Przemyslaw Piotrowski 首先,熟悉 Oracle-Python 连接性的基本概念 2007 年 9 月发布 参见系列目录 在 Python 做事方式的核心原则中,有一个规定是 ...

  8. python正则表达式操作指南_比较详细Python正则表达式操作指南(re使用)

    就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.使用这个小型语言,你可以为想要匹配的相应字符串集指定规则:该 ...

  9. python查询最高分_精通 Oracle+Python,第 1 部分:查询最佳应践

    在 Python 做事方式的核心原则中,有一个规定是要求具有到 API 的高级接口.数据库 API(在此例中为 Oracle API)就是一个例子.使用 Computronix 的 cx_Oracle ...

最新文章

  1. python客户价值分析_Python数据分析与应用航空公司客户价值分析.ppt
  2. Croc Champ 2013 - Round 2 (Div. 2 Edition) 贪心+ 搜索+剪枝 + 数学
  3. 我读过的最好的epoll讲解--转自”知乎“ 【转】
  4. Storm并行度详解
  5. 《基于张量网络的学习入门》学习笔记3
  6. 公需科目必须学吗_化学难吗?
  7. 华北计算机研究所分房,请教公安部第一研究所这样分房合理吗??
  8. 《BI那点儿事》数据挖掘各类算法——准确性验证
  9. 【BZOJ3223】文艺平衡树,Splay反转区间
  10. html是一种用于创建网页的标准标记语言,html
  11. 关于Java浮点数运算精度丢失问题
  12. 扎克伯格靠AI挺过危机,Facebook满血复活还需3年
  13. GDAL源码剖析(八)之编译GEOS和PROJ4库
  14. Lock和synchronized的区别和使用(转载)
  15. 如何在linux系统上安装wine来运行.exe文件
  16. python数字图像处理——边缘检测算子(Laplacian算子、Roberts算子、Prewitt算子和Sobel算子)
  17. VS2008连接TFS 2010
  18. Android多国语言包
  19. 2022年茶艺师(初级)考试练习题模拟考试平台操作
  20. 平台如何接入微信支付

热门文章

  1. 腾讯也有“神盾局”?秀出“技术肌肉”就靠TA了……
  2. 数组方法 包含es6
  3. linux unshare 命令,详解Linux Namespace之User
  4. CENTOS 7 踢用户_CentOS服务器及MySQL数据库性能测试-乐搏软件测试
  5. centos6.x redhat6.x 升级openssh8.7
  6. 第4篇:Flowable快速工作流脚手架Jsite_启动项目
  7. MyBatis-Plus_实体作为条件构造器构造方法的参数
  8. 系统架构设计师 - 面向服务架构 SOA
  9. java线程条件变量_使用条件变量(多线程笔记)
  10. flexcell控件 许可证信息没有找到_报表控件 ActiveReports 全面迎来 .Net Core 时代