Requests是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。Requests的哲学是以 PEP 20 的习语为中心开发的,所以它比 urllib 更加 Pythoner。更重要的一点是它支持 Python3 哦!

Beautiful is better than ugly.(美丽优于丑陋)

Explicit is better than implicit.(清楚优于含糊)

Simple is better than complex.(简单优于复杂)

Complex is better than complicated.(复杂优于繁琐)

Readability counts.(重要的是可读性)

一、安装request

通过pip安装

pip install requests

或者,下载代码后安装:

$ git clone git://http://github.com/kennethreitz/requests.git$ cdrequests

$ python setup.pyinstall

再懒一点,通过IDE安装吧,如pycharm!

二、发送请求与传递参数

先来一个简单的例子吧!让你了解下其威力:

importre quests

r= requests.get(url='http://www.itwhy.org')#最基本的GET请求

print(r.status_code)#获取返回状态

r = requests.get(url='http://dict.baidu.com/s',params={'wd':'python'})#带参数的GET请求

print(r.url)

print(r.text)#打印解码后的返回数据

很简单吧!不但GET方法简单,其他方法都是统一的接口样式哦!

requests.get(‘https://github.com/timeline.json’) #GET请求

requests.post(“http://httpbin.org/post”) #POST请求

requests.put(“http://httpbin.org/put”) #PUT请求

requests.delete(“http://httpbin.org/delete”) #DELETE请求

requests.head(“http://httpbin.org/get”) #HEAD请求

requests.options(“http://httpbin.org/get”) #OPTIONS请求

PS:以上的HTTP方法,对于WEB系统一般只支持 GET 和 POST,有一些还支持HEAD 方法。

带参数的请求实例:

import requests

requests.get('http://www.dict.baidu.com/s',params={'wd':'python'})#GET参数实例requests.post('http://www.itwhy.org/wp-comments-post.php',data={'comment':'测试POST'})#POST参数实例

POST发送JSON数据:

import requests

import json

r= requests.post('https://api.github.com/some/endpoint',data=json.dumps({'some':'data'}))print(r.json())

定制header:

import requests

importjson

data= {'some':'data'}

headers={'content-type':'application/json','User-Agent':'Mozilla/5.0 (X11; Ubuntu;Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'}

r= requests.post('https://api.github.com/some/endpoint', data=data,headers=headers)print(r.text)

三、response对象

使用requests方法后,会返回一个response对象,其存储了服务器响应的内容,如上实例中已经提到的 r.text、r.status_code……

获取文本方式的响应体实例:当你访问 r.text 之时,会使用其响应的文本编码进行解码,并且你可以修改其编码让 r.text 使用自定义的编码进行解码。

r = requests.get('http://www.itwhy.org')print(r.text,'\n{}\n'.format('*'*79),r.encoding)

r.encoding='GBK'print(r.text,'\n{}\n'.format('*'*79),r.encoding)

其他响应:

r.status_code #响应状态码

r.raw #返回原始响应体,也就是urllib 的 response 对象,使用 r.raw.read() 读取

r.content #字节方式的响应体,会自动为你解码gzip 和 deflate 压缩

r.text #字符串方式的响应体,会自动根据响应头部的字符编码进行解码

r.headers #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None

#*特殊方法*#

r.json() #Requests中内置的JSON解码器

r.raise_for_status() #失败请求(非200响应)抛出异常

案例之一:

importrequests

URL='http://ip.taobao.com/service/getIpInfo.php'#淘宝IP地址库APItry:

r= requests.get(URL, params={'ip':'8.8.8.8'}, timeout=1)

r.raise_for_status()#如果响应状态码不是 200,就主动抛出异常

exceptrequests.RequestException as e:print(e)else:

result=r.json()print(type(result), result, sep='\n')

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】

全套资料获取方式:点击下方小卡片自行领取即可

 

 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐