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. 【Spark机器学习速成宝典】模型篇03线性回归【LR】(Python版)

    目录 线性回归原理 线性回归代码(Spark Python) 线性回归原理 详见博文:http://www.cnblogs.com/itmorn/p/7873083.html 返回目录 线性回归代码( ...

  2. ubuntu 16.04 安装最新的 docker

      转载地址:https://www.cnblogs.com/tianhei/p/7802064.html 本文将介绍在ubuntu16.04系统下安装和升级docker.docker-compose ...

  3. mysql5.7.25搭建mysql-5.7.25.tar.gz包(亲验)

    STEP 1. 下载 去往官方下载MySQL包.http://dev.mysql.com mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz STEP 2. 解压缩 ...

  4. 写python获取android设备的GPS及姿态信息

    在android上,我们可以使用QPython来编写.执行Python脚本.它对很多android 系统函数进行了方便的封装,使用QPython编写功能简单的小程序异常方便. 这个示例是我之前用来读取 ...

  5. idea -- spring datasource配置文件不显示datasource.properties文件对应属性的值,错误提示cannot resolve property key

    原文:https://yq.aliyun.com/articles/657711 点击 文件 顶部的 蓝色 MVC application context,修改为Local File

  6. Android 动态申请权限

    AndroidManifest.xml(清单文件)添加需要的权限 <uses-permission android:name="android.permission.ACCESS_CO ...

  7. delphi dbgrid数据导出为excel

    uses Excel2000,ComObj; procedure F_Form.Button1Click(Sender: TObject);var    myExcel:TExcel;    Int_ ...

  8. PLAT_SYS_USER

    CREATE TABLE "CQTEST"."PLAT_SYS_USER" ( "ID" VARCHAR2(32 BYTE) NOT NUL ...

  9. JavaScript Source Maps浅析

    阅读目录 有用的链接 Link: 原文链接 译文开始: 对网站进行性能优化对一个最容易的方法就是把JS和CSS进行打包压缩.但是当你需要调试这些压缩文件中的代码的时候,会发生什么?可能会是一场噩梦.但 ...

  10. [Vuejs] 给ref赋值需要注意的问题

    1.简单赋值 <div ref="refCon"></div> 访问方式: this.$refs.refCon 2.循环赋值,相同名称 <div v- ...