Requests模块的使用

中文文档API:http://2.python-requests.org/en/master/

1、发送get、post请求

import requests
reponse = requests.get("http://www.baidu.com")
reponse = requests.post("http://www.baidu.com")

2、响应的属性

  • 查看响应内容

    • response.text 属性

    • respone.content.decode('utf8') 属性,字节形式的需要使用decode解码

  • 查看响应码 response.status_code 属性

  • 查看响应头 respone.headers 属性

  • 查看cookie信息 respone.cookies 属性

  • 查看请求方法 respone.request 属性

  • 如何解决充值接口进行充值之前需要先调用登录接口进行登录?

   方法一:可通过创建session对象,自动保存上次请求的cookie信息,可解决鉴权、授权的问题。

import requests
from requests.sessions import Session # 创建一个session对象(会话)
# 作用:自动保存上次请求的cookie信息
session = Session() # 注册接口
register_url = "http://ip:port/futureloan/mvc/api/member/register"
register_data = {'mobilephone':'','pwd':'','regname':'一纪'}
register_response = session.post(url=register_url,data=register_data)
# print(register_response.status_code)
print(register_response.text) # 登录接口
login_url = "http://ip:port/futureloan/mvc/api/member/login"
login_data = {'mobilephone':'','pwd':''}
login_response = requests.get(url=login_url,data=login_data)
print(login_response.text) # 充值接口
rech_url = "http://ip:port/futureloan/mvc/api/member/recharge"
rech_data = {'mobilephone':'','amount':''}
rech_response = requests.get(url=rech_url,data=rech_data)
print(rech_response.text)

输出结果为:

   方法二:通过在requsets请求中传入cookies信息,也可解决鉴权、授权的问题。

import requests
# 登陆接口
login_url = "http://ip:port/futureloan/mvc/api/member/login"
login_data = {'mobilephone':'','pwd':''}
login_response = requests.post(url=login_url,data=login_data)
print(login_response.text)
print(login_response.cookies)
cookies = login_response.cookies # 充值接口
rech_url = "http://ip:port/futureloan/mvc/api/member/recharge"
rech_data = {'mobilephone':'','amount':''}
rech_response = requests.post(url=rech_url,data=rech_data,cookies=cookies)
print(rech_response.text)

输出结果为:

  • heraders参数应用

headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.35 Safari/537.36",
# "Token":"",
"cookie":"JSESSIONID=5039A5FD7567C7C78B8180C50D340A5F", # 请求的cookie信息
"content-Type":"application/x-www-form-urlencoded" # post请求格式
}
rech_response = requests.post(url=rech_url,data=rech_data,headers=headers)

3、封装一个自己的requests类

目的:为了根据用例中的请求方法,来决定发起什么类型的请求。

为了输出loggib日志

HttpRequests类用来直接发送请求不记录cookies信息的;而HttpRequestsCookies类可以记录cookies信息。

import requests
class HttpRequests():
# 直接发送请求而不记录cookies信息的
def request(self,method,url,params=None,data=None,headers=None,cookies=None,json=None):
method = method.lower()
# 判断请求的方法是post还是get
if method == "post":
# 判断post请求是否需要使用json来传参(适用于接口参数中有使用json传参的)
if json:
# logger.info("正在发送请求,请求地址:{},请求参数:{}".format(url,json)
return requests.post(url=url,json=json,headers=headers,cookies=cookies)
else:
# logger.info("正在发送请求,请求地址:{},请求参数:{}".format(url,data))
return requests.post(url=url, data=data, headers=headers, cookies=cookies)
elif method == "get":
# logger.info("正在发送请求,请求地址:{},请求参数:{}".format(url,params))
return requests.get(url=url, params=params, headers=headers, cookies=cookies) class HttpRequestsCookies():
# 发送请求且记录cookies信息,给下一次使用
def __init__(self):
# 创建一个session对象
self.session = requests.sessions.Session()
def request(self,method,url,params=None,data=None,headers=None,cookies=None,json=None):
method = method.lower()
# 判断请求的方法是post还是get
if method == "post":
# 判断post请求是否需要使用json来传参(适用于接口参数中有使用json传参的)
if json:
# logger.info("正在发送请求,请求地址:{},请求参数:{}".format(url,data))
return self.session.post(url=url,json=json,headers=headers,cookies=cookies)
else:
# logger.info("正在发送请求,请求地址:{},请求参数:{}".format(url,data))
return self.session.post(url=url, data=data, headers=headers, cookies=cookies)
elif method == "get":
# logger.info("正在发送请求,请求地址:{},请求参数:{}".format(url,params))
return self.session.get(url=url, params=params, headers=headers, cookies=cookies)
# 断开session连接
def close(self):
self.session.close()
  
if __name__ == "__main__":
r = HttpRequestsCookies()
# 登录接口
login_url = "http://ip:port/futureloan/mvc/api/member/login"
login_data = {'mobilephone': '', 'pwd': ''}
response = r.request('post',url=login_url, data=login_data)
print(response.text)
# 充值接口
rech_url = "http://ip:port/futureloan/mvc/api/member/recharge"
rech_data = {'mobilephone': '', 'amount': ''}
response = r.request('post', url=rech_url, data=rech_data)
print(response.text)

输出结果为:

python接口测试中—Requests模块的使用的更多相关文章

  1. Python接口测试-使用requests模块发送GET请求

    本篇主要记录下使用python的requests模块发送GET请求的实现代码. 向服务器发送get请求:无参数时:r = requests.get(url)带params时:r = requests. ...

  2. Python接口测试-使用requests模块发送post请求

    本篇主要记录下使用python的requests模块发送post请求的实现代码. #coding=utf-8 import unittest import requests class PostTes ...

  3. Python接口测试,Requests模块讲解:GET、POST、Cookies、Session等

    文章最下方有对应课程的视频链接哦^_^ 一.安装.GET,公共方法 二.POST 三.Cookies 四.Session 五.认证 六.超时配置.代理.事件钩子 七.错误异常

  4. 孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块

    孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块 (完整学习过程屏幕记录视频地址在文末) 从今天起开始正式学习Python的爬虫. 今天已经初步了解了两个主要的模块: ...

  5. Python爬虫练习(requests模块)

    Python爬虫练习(requests模块) 关注公众号"轻松学编程"了解更多. 一.使用正则表达式解析页面和提取数据 1.爬取动态数据(js格式) 爬取http://fund.e ...

  6. 关于解决Python中requests模块在PyCharm工具中导入问题

    问题引入: 今天在学习Python网络请求的时候,导入requests模块时一直报红色波浪线,如图: 反复折腾,一直以为自己没有安装requests模块,反复安装反复卸载: 安装方法: 首先 cd 进 ...

  7. python 中requests 模块用py2exe生成exe后SSL certificate exception的问题

    [('system library', 'fopen', 'No such process'), ('BIO routines', 'BIO_new_file', 'no such file'), ( ...

  8. Python高手之路【八】python基础之requests模块

    1.Requests模块说明 Requests 是使用 Apache2 Licensed 许可证的 HTTP 库.用 Python 编写,真正的为人类着想. Python 标准库中的 urllib2  ...

  9. Python 爬虫二 requests模块

    requests模块 Requests模块 get方法请求 整体演示一下: import requests response = requests.get("https://www.baid ...

随机推荐

  1. vue-解决弹出蒙层滑动穿透问题

    最近开发过程中遇到一些小问题(似乎问题总是那么多),但一直没什么时间去优化与解决.程序员不能被业务绑架,有时间还是花点在代码上

  2. eclipse subclipse svn 插件安装使用

    一.在线安装 1.打开Eclipse,菜单栏中选择"Help"->"Install New SoftWare..." 2.在弹出的对话框中,点击" ...

  3. 2019-7-29未命名文件 sdfsdfsdf

    2019-7-29未命名文件 sdfsdfsdf 新建模板小书匠 欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过设置里的修改模板来改变新建文章的内容.

  4. idea报错及解决

    <b>root project 'test2': Web Facets/Artifacts will not be configured properly</b>Details ...

  5. [VBA]利用正则表达式创建函数处理字符串

    1.去除字符串中的数字 Function aa(sr As Range)Set reg = CreateObject("vbscript.regexp")With reg.Glob ...

  6. caffe-----使用C++ 提取网络中间层特征数据

    最近实验,想要在c++下知道网络中间某一层的特征数据情况,查找了相关资料,记录一下. 其实在caffe框架里面是包含这种操作的,可以模仿tools/extract_features.cpp中的操作来得 ...

  7. Docker 容器操作

    1. 创建并运行 一个容器 docker run -it --rm   centos:latest  bash run  运行容器 -it  以交互方式运行容器 --rm  退出容器后删除容器 cen ...

  8. Hand on Machine Learning 第三章:分类器

    1. 获取数据 使用MNIST数据集练习分类任务 from sklearn.datasets import fetch_mldata from scipy.io import loadmat mnis ...

  9. vue-cli3.0使用及部分配置详解

    1.检测安装   vue-V 2.创建项目命令:(官网) 3.简单的配置信息 这里如果你是第一次用3.0版本的话,是没有前两个的,而只有最后两个,这里是 让你选的,第一个是默认配置,一般选第二个,自己 ...

  10. 微信小程序购物车实现

    1,wxml <view class="miniCart-wrap {{isIpx?'is-ipx':''}}"> <view class="miniC ...