1、介绍及应用
介绍:流行的接口http(s)请求工具,功能强大,简单方便,容易上手
文档:
- 英文:Requests: HTTP for Humans™ — Requests 2.26.0 documentation
- 中文:Requests: 让 HTTP 服务人类 — Requests 2.18.1 文档
Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用。
警告:非专业使用其他 HTTP 库会导致危险的副作用,包括:安全缺陷症、冗余代码症、重新发明轮子症、啃文档症、抑郁、头疼、甚至死亡。
Requests 允许你发送纯天然,植物饲养的 HTTP/1.1 请求,无需手工劳动。你不需要手动为 URL 添加查询字串,也不需要对 POST 数据进行表单编码。Keep-alive 和 HTTP 连接池的功能是 100% 自动化的,一切动力都来自于根植在 Requests 内部的 urllib3。
- 安装
pip install requests
- 快速使用
#1、导包requests
import requests
# 2、发送get请求
r = requests.get("https://blog.csdn.net/python_jeff")
# 3、打印结果
print(r)
方法 | 备注 |
r.status_code | 响应状态 |
r.content | 字节方法的响应头,会自动为你解码gzip和deflate压缩 |
r.headers | 以字典对象存储服务器响应头,若键不存在则返回None |
r.json() | Requests中内置的JSON |
r.url |
获取url |
r.encoding | 编码格式 |
r.cookies | 获取cookies |
r.raw | 返回原始响应体 |
r.text | 字符串方式的响应体,会自动根据响应头部的字符编码进行 |
r.raise_for_status() | 失败请求(非200响应体)抛出异常 |
2、用例代码编写
'''
登录成功
http://211.103.136.242:8064
/authorizations/
POST
json
{
"username":"python",
"password":"12345678"
}
user_id': 1, 'username': 'python'
'''
#登录
# 1、导包
import pprint
import requests
# 2、定义登录方式
def login():
# 3、定义测试数据
url = 'http://211.103.136.242:8064/authorizations/'
data = {
"username":"python",
"password":"12345678"
}
# 4、发送POST请求
r = requests.post(url,json=data)
# 5、输出结果
pprint.pprint(r.json())
if __name__ == '__main__':
login()
'''
个人信息
获取个人信息正确
/user/
get
认证:
```js
headers: {
'Authorization': 'JWT ' + this.token
},
'''
def info():
# 1、参数
url = 'http://211.103.136.242:8064/user/'
token = login()['token']
headers={
'Authorization': 'JWT ' + token
}
# 2、get请求
r = requests.get(url,headers = headers)
# 3、输出
print(r.json())
if __name__ == '__main__':
# login()
info()
'''
商品列表数据正确
请求方式: GET `/categories/(?P<category_id>\d+)/skus?page=xxx&page_size=xxx&ordering=xxx`
/categories/115/skus/
get json
{
"page":"1",
"page_size": "10",
"ordering": "create_time"
}
'''
def goods_list():
# 1、参数
url = 'http://211.103.136.242:8064/categories/115/skus/'
data = {
"page":"1",
"page_size": "10",
"ordering": "create_time"
}
# 2、get请求
r = requests.get(url,json= data)
# 3、输出
pprint(r.json())
if __name__ == '__main__':
# login()
# info()
goods_list()
'''
添加购物车成功
/cart/
login_4 post
json
{"sku_id": "3","count": "1", "selected": "true"}
{"Authorization": "JWT ${token}$"}
'''
def cart():
# 1、参数
url = 'http://211.103.136.242:8064/cart/'
token = login()['token']
headers={
'Authorization': 'JWT ' + token
}
data = {"sku_id": "3","count": "1", "selected": "true"}
# 2、get请求
r = requests.post(url,headers = headers,json=data)
# 3、输出
pprint(r.json())
if __name__ == '__main__':
# login()
# info()
# goods_list()
cart()
扫描二维码关注公众号,回复:
13531567 查看本文章
'''
保存订单
/orders/
post
login_4 post
json
{ "address":"1","pay_method":"1" }
{"Authorization": "JWT ${token}$"}
'''
def order():
# 1、参数
url = 'http://211.103.136.242:8064/orders/'
token = login()['token']
headers={
'Authorization': 'JWT ' + token
}
data = { "address":"1","pay_method":"1" }
# 2、get请求
r = requests.post(url,headers = headers,json=data)
# 3、输出
pprint(r.json())
3、方法封装
1.Get封装
# 1、创建封装get方法
def requests_get(url,headers=None,json= None):
# 2、发送requests get 请求
r = requests.get(url,headers = headers,json= json)
# 3、获取结果响应内容
code = r.status_code
try:
body = r.json()
except Exception as e:
body = r.text
# 4、内容存到字典
res = dict()
res['code'] = code
res['body'] = body
# 5、字典返回
return res
2.Post封装
#post方法的封装
# 1、创建封装post方法
def requests_post(url,headers=None,json= None):
# 2、发送requests post 请求
r = requests.post(url,headers = headers,json= json)
# 3、获取结果响应内容
code = r.status_code
try:
body = r.json()
except Exception as e:
body = r.text
# 4、内容存到字典
res = dict()
res['code'] = code
res['body'] = body
# 5、字典返回
return res
3.重构
# 重构
# 1、创建类
class Request:
# 2、定义公共方法
def requests_api(self,url, headers=None, json=None,method='get'):
# 1.增加方法的参数,根据参数来验证方法get/post,方法请求
if method == 'get':
#get请求
r = requests.get(url, headers=headers, json=json)
elif method == 'post':
#post请求
r = requests.post(url, headers=headers, json=json)
# 2.重复的内容,复制进去
code = r.status_code
try:
body = r.json()
except Exception as e:
body = r.text
res = dict()
res['code'] = code
res['body'] = body
return res
# 3、重构get/post方法
#get
# 1、定义方法
def get(self,url,**kwargs):
# 2、定义参数
#url,json,headers,cookies,method
# 3、调用公共方法
return self.requests_api(url,method='get',**kwargs)
# post
# 1、定义方法
def post(self, url, **kwargs):
# 2、定义参数
# url,json,headers,cookies,method
# 3、调用公共方法
return self.requests_api(url, method='post', **kwargs)
4.testcase重写
# -*- coding: utf-8 -*-
# @Time : 2021/12/7 13:47
# @Author : jeffky
# @File : Test_Mail.py
# 1、导包
from pprint import pprint
from utils.RequestsUtil import requests_get, requests_post, Request
#登录
'''
登录成功
http://211.103.136.242:8064
/authorizations/
POST
json
{
"username":"python",
"password":"12345678"
}
user_id': 1, 'username': 'python'
'''
import requests
# 2、定义登录方式
def login():
# 3、定义测试数据
url = 'http://211.103.136.242:8064/authorizations/'
data = {
"username":"python",
"password":"12345678"
}
# 4、发送POST请求
# r = requests_post(url,json=data)
request = Request()
r = request.post(url, json=data)
# 5、输出结果
pprint(r)
return r['body']
'''
个人信息
获取个人信息正确
/user/
get
认证:
```js
headers: {
'Authorization': 'JWT ' + this.token
},
'''
def info():
# 1、参数
url = 'http://211.103.136.242:8064/user/'
token = login()['token']
headers={
'Authorization': 'JWT ' + token
}
# 2、get请求
# r = requests_get(url,headers = headers)
request =Request()
r = request.get(url,headers = headers)
# 3、输出
pprint(r)
'''
商品列表数据正确
请求方式: GET `/categories/(?P<category_id>\d+)/skus?page=xxx&page_size=xxx&ordering=xxx`
/categories/115/skus/
get json
{
"page":"1",
"page_size": "10",
"ordering": "create_time"
}
'''
def goods_list():
# 1、参数
url = 'http://211.103.136.242:8064/categories/115/skus/'
data = {
"page":"1",
"page_size": "10",
"ordering": "create_time"
}
# 2、get请求
# r = requests_get(url,json= data)
request =Request()
r = request.get(url,json=data)
# 3、输出
pprint(r)
'''
添加购物车成功
/cart/
login_4 post
json
{"sku_id": "3","count": "1", "selected": "true"}
{"Authorization": "JWT ${token}$"}
'''
def cart():
# 1、参数
url = 'http://211.103.136.242:8064/cart/'
token = login()['token']
headers={
'Authorization': 'JWT ' + token
}
data = {"sku_id": "3","count": "1", "selected": "true"}
# 2、get请求
# r = requests_post(url,headers = headers,json=data)
request =Request()
r = request.get(url,headers = headers,json=data)
# 3、输出
pprint(r)
'''
保存订单
/orders/
post
login_4 post
json
{ "address":"1","pay_method":"1" }
{"Authorization": "JWT ${token}$"}
'''
def order():
# 1、参数
url = 'http://211.103.136.242:8064/orders/'
token = login()['token']
headers={
'Authorization': 'JWT ' + token
}
data = { "address":"1","pay_method":"1" }
# 2、get请求
# r = requests_post(url,headers = headers,json=data)
request =Request()
r = request.post(url,headers = headers,json=data)
# 3、输出
pprint(r)
if __name__ == '__main__':
login()
# info()
# goods_list()
# cart()
# order()