使用python进行接口测试
2016-12-14 14:11
369 查看
最近在做接口测试,之前公司的方案是使用postman进行接口测试。但是伟大的墙导致我们只能用离线版postman。。然后一个很长很长的接口列表,一个接一个的访问。我的天哪。。所以萌生了一个想法,使用python编写一套接口测试脚本,设置接口列表,然后逐条访问,输出日志。
第一个坑:POST 和 GET----GET一般用于获取/查询资源信息,而POST一般用于更新资源信息|Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求。
做过接口测试或者做过前端的人都知道,接口的访问方式是不一致的,所以才会使用postman来进行接口测试,因为它可以设置post和get方式。使用python模拟这俩种访问方式是重中之重。先说GET方式。GET方式就比较简单了,把接口放进浏览器地址栏,点下回车就完成了一次GET。所以就需要使用python访问URL就可以模拟一次GET 测试。
如上所示就完成了一次GET请求,调用urllib2库,然后将一个字符串形式的URL传给urllib2.urlopen函数,最后使用read()方法将GET回来的数据存储起来。
然后说说POST。其实在python的urllib2库中,我们刚刚所使用的urlopen函数还有其他几样不是必选的入参,因为这些入参给定了初始化的值:
如上代码,urllib库有一个很智能的毛病。data不给值,访问方式就是GET,data给了值,方式就会变成POST;所以模拟POST 方式的代码如下:
就像如上代码,把POST方式所需要的数据写到data参数中去,POST方式就模拟成功了。
第二个坑:cookie的使用
使用python获取cookie所需要的库叫做cookielib。获取cookie的例子:
在下一步,将获取到的cookie绑定到opener头中:
现在的opener就可以用来访问任意需要登录的网站了!
第一个坑:POST 和 GET----GET一般用于获取/查询资源信息,而POST一般用于更新资源信息|Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求。
做过接口测试或者做过前端的人都知道,接口的访问方式是不一致的,所以才会使用postman来进行接口测试,因为它可以设置post和get方式。使用python模拟这俩种访问方式是重中之重。先说GET方式。GET方式就比较简单了,把接口放进浏览器地址栏,点下回车就完成了一次GET。所以就需要使用python访问URL就可以模拟一次GET 测试。
1 import urllib2 2 url_save = 'http://www.baidu.com/' 3 try: 4 s_save = urllib2.urlopen(url_save).read() 5 print s_save 6 except urllib2.HTTPError, e: 7 print e.code 8 except urllib2.URLError, e: 9 print str(e)
如上所示就完成了一次GET请求,调用urllib2库,然后将一个字符串形式的URL传给urllib2.urlopen函数,最后使用read()方法将GET回来的数据存储起来。
然后说说POST。其实在python的urllib2库中,我们刚刚所使用的urlopen函数还有其他几样不是必选的入参,因为这些入参给定了初始化的值:
1 def urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, 2 cafile=None, capath=None, cadefault=False, context=None):
如上代码,urllib库有一个很智能的毛病。data不给值,访问方式就是GET,data给了值,方式就会变成POST;所以模拟POST 方式的代码如下:
import urllib import urllib2 url = 'http://www.example.com' # values的形式:name:value values = {'**' : '***', '**' : '***', '**' : '***' } #使用urllib.urlencode函数对values字典进行处理,最终形式为:**=***&**=*** data = urllib.urlencode(values) #如果对data顺序有要求,建议自己拼接data req = urllib2.Request(url, data) response = urllib2.urlopen(req) the_page = response.read()
就像如上代码,把POST方式所需要的数据写到data参数中去,POST方式就模拟成功了。
第二个坑:cookie的使用
使用python获取cookie所需要的库叫做cookielib。获取cookie的例子:
1 # 这里有四种CookieJar,CookieJar是最原始的 2 cookie_use = cookielib.CookieJar() 3 handler = urllib2.HTTPCookieProcessor(cookie_use) 4 # 使用绑定好CookieJar的handler创建一个opener 5 opener = urllib2.build_opener(handler) 6 # 将opener安装到urllib2中 7 urllib2.install_opener(opener) 8 # 使用安装好的urllib2访问某一网站获取cookie 9 urllib2.urlopen('https://....../login') 10 #这个时候cookie已经被CookieJar获取到了 11 print cookie_use
在下一步,将获取到的cookie绑定到opener头中:
1 ''' 2 将获取到的cookie绑定到opener,上一步获取的cookie并不满足如下格式, 3 需要自己进行字符串的切片和拼接 4 ''' 5 opener.addheaders.append(('Cookie', 'name=***&888=888'))
现在的opener就可以用来访问任意需要登录的网站了!
相关文章推荐
- 使用Python的Requests库进行接口测试——基础用法
- 使用Python的requests库进行接口测试——session对象的妙用
- 使用python进行接口测试(二)
- 使用Python的requests库进行接口测试——session对象的妙用
- 使用python进行接口测试
- 使用python进行接口测试
- 举例如何使用Python unittest 模块进行接口测试
- 使用Python进行并发编程
- 在cuda8.0+faster-rcnn(python版)下使用kitti数据集进行训练
- 使用Python进行分布式系统协调 (ZooKeeper,Consul, etcd )
- python——使用itemgetter和sorted对列表内的元素进行排序
- 使用Python进行代码测试
- python使用百度进行爬虫简单学习例子
- Python学习之使用Pillow(PIL)进行图像操作方法详解
- 使用python读取mysql数据库并进行数据的操作
- Python 爬虫(以赛马数据为例)之使用BeautifulSoup进行Html解析
- windows下python,使用笔记本摄像头进行连续截图,并进行灰度、二值化处理
- 技术漫谈 | 使用docker-compose进行python开发 - 推酷
- 树莓派下python,使用USB和CSI摄像头进行视频连续截图,并进行灰度、二值化处理
- 使用python进行ridge回归