接口自动化之requests模块的简单使用
什么是Requests?
Requests是用Python语言编写,基于Urllib,采用Apache2 Licensed 开源协议的HTTP库。
它比Urllib更加方便,可以节约我们大量的工作,完全满足HTTP测试需求。
一句话---Python实现的简单易用的HTTP库。
requests模块是第三方库,需要手动下载
pip install requests
导入requests模块
import requests
一、发送get请求
get请求传递参数使用params来进行传递
data = {
"name": "desire",
"age": 23
}
response = requests.get(url="http://httpbin.org/get", params=data)
获取响应数据
1、text属性(自动识别文本中的编码格式进行解码,有时候不准确,会出现乱码)
response.text
2、content(获取返回的内容,需要自己使用decode指定解码方式)
response.content.decode("utf8")
3、json():获取返回内容中的json数据(只能在返回数据时json的情况下使用)
response.json()
二、发送post请求
# 请求头
header = {
"Content-Type": "application/json"
}
# 参数
data = {
'name': 'Desire',
'age': '23'
}
# 请求地址
url = "http://httpbin.org/post"
json数值的参数一定要使用json去传递
response = requests.post(url=url, json=data)
如果表单类型的参数是Content-Type: application/x-www-form-urlencoded; charset=UTF-8
就需要使用data进行传递
response = requests.post(url=url, data=data, headers=header)
post请求上传文件: 使用files来上传文件
files = {'file': open('favicon.ico', 'rb')}
response = requests.post('http://httpbin.org/post', files=files)
三、发送patch请求
res = requests.patch(url="http://httpbin.org/patch")
print(res.json())
四、session会话维持
创建发送请求session对象,通过session对象发送请求
s = requests.Session()
通过session对象发送请求进行添加cookies值
s.get('http://httpbin.org/cookies/set/number/123456789')
通过同一个session对象发送请求,成功获取到上次请求添加的cookies值
response = s.get('http://httpbin.org/cookies')
print(response.text)
五、获取cookies值
response = requests.get('http://www.baidu.com')
print(response.cookies)
*封装发送请求类
class RequestsUrl(object):
"""发送请求"""
@staticmethod
def send(url, method, params=None, json=None, data=None, headers=None):
"""
发送请求
:param url:请求地址
:param method:请求方式
:param params:get请求数据
:param json:json请求数据
:param data:x-www-form-urlencoded格式数据
:param headers:请求头
:return 返回响应结果
"""
# 将大写转化成小写
method = method.lower()
if method == "get":
return requests.get(url=url, params=params, headers=headers)
elif method == "post":
return requests.post(url=url, json=json, data=data, headers=headers)
elif method == "patch":
return requests.patch(url=url, json=json, data=data, headers=headers)
class RequestSessionUrl(object):
"""使用session鉴权的接口,使用这个发送请求"""
def __init__(self):
self.re = requests.session()
def send(self, url, method, params=None, json=None, data=None, headers=None):
"""
发送请求
:param url:请求地址
:param method:请求方式
:param params:get请求数据
:param json:json请求数据
:param data:x-www-form-urlencoded格式数据
:param headers:请求头
:return 返回响应结果
"""
# 将大写转化成小写
method = method.lower()
if method == "get":
return self.re.get(url=url, params=params, headers=headers)
elif method == "post":
return self.re.post(url=url, json=json, data=data, headers=headers)
elif method == "patch":
return self.re.patch(url=url, json=json, data=data, headers=headers)