使用Python的requests库作接口测试——对HPPT动词的支持
2015-08-31 15:48
661 查看
equests提供了几乎所有HTTP动词的功能:GET,OPTIONS, HEAD,POST,PUT,PATCH和DELETE。
举个栗子:从Github上获取关于一个特定commit的信息
动词GET-查看提交信息
HTTP GET是一个幂等的方法,从给定的URL返回一个资源。因而,当你试图从一个web位置获取数据之时,你应该使用这个动词。举个栗子:从Github上获取关于一个特定commit的信息
>>> import requests >>> r = requests.get('https://api.github.com/repos/kennethreitz/requests/git/commits/a050faf084662f3a352dd1a941f2c7c9f886d4ad')我们应该确认Github是否正确响应。如果正确响应,我们想弄清响应内容是什么类型的。
>>> if (r.status_code == requests.codes.ok): ... print r.headers['content-type'] ... application/json; charset=utf-8可见,GitHub返回了JSON数据,非常好,这样就可以使用
r.json方法把这个返回的数据解析成Python对象。
# 将json对象转成python字典 >>> commit_data = r.json() # 获取所有键 >>> print commit_data.keys() [u'committer', u'author', u'url', u'tree', u'html_url', u'sha', u'parents', u'me ssage'] # 打印commiter键的内容 >>> print commit_data[u'committer'] {u'date': u'2012-05-10T18:10:50Z', u'name': u'Kenneth Reitz', u'email': u'me@ken nethreitz.com'} # 打印message键的内容 >>> print commit_data[u'message'] makin' history
OPTIONS动词-查看接口方法
如果服务器正确实现了OPTIONS,那么服务器应该在响应头中返回允许用户使用的HTTP方法。>>> verbs = requests.options('http://a-good-website.com/api/cats') >>> print verbs.headers['allow'] GET,HEAD,POST,OPTIONS但是通常好多服务器并未实现OPTIONS方法。这是一个恼人的疏忽,但没关系,那我们可以使用枯燥的文档来查看接口支持的方法。
POST动词-发表评论
发表评论,这里需要身份验证。>>> from requests.auth import HTTPBasicAuth >>> auth = HTTPBasicAuth('fake@example.com', 'not_a_real_password') >>> r = requests.post(url=url, data=body, auth=auth) >>> r.status_code 201 >>> content = r.json() >>> print(content[u'body']) Sounds great! I'll get right on it.
PATCH动词-编辑评论
>>> print(content[u"id"]) 5804413 >>> body = json.dumps({u"body": u"Sounds great! I'll get right on it once I feed my cat."}) >>> url = u"https://api.github.com/repos/kennethreitz/requests/issues/comments/5804413" >>> r = requests.patch(url=url, data=body, auth=auth) >>> r.status_code 200
DELETE动词-删除评论
>>> r = requests.delete(url=url, auth=auth) >>> r.status_code 204 >>> r.headers['status'] '204 No Content'
HEAD动词-只查看响应的头部
>>> r = requests.head(url=url, auth=auth) >>> print r.headers ... 'x-ratelimit-remaining': '4995' 'x-ratelimit-limit': '5000' ...
相关文章推荐
- Python中动态添加类的成员
- python用到CMD的几个文件夹操作命令
- Python之yield
- Eclipse和PyDev搭建python开发环境
- 在ArcGIS中创建Python工具(一)
- 【Python系列2】赋值、深度复制与传参
- 统计字符串中字母出现的次数,字典形式输出(python)
- Python 爬虫入门《中》
- 用Python的requests库作接口测试——对响应进行迭代
- python模拟登录新浪微博
- python 的对象内建方法:__XXX__(a1,a2)
- 用Python的requests库作接口测试——上传文件
- Python使用requests库模拟登陆网站的方式--以豆瓣为例
- 特征提取的相关博客
- 使用Python的requests库作接口测试——请求对象与响应对象
- python 学习笔记--列表,无组,字典的区别
- Python多线程
- 64位Win8环境的Python数值分析库安装(原创)
- 零基础学python-10.1 序列赋值高级应用
- 零基础学python-10.1 序列赋值高级应用