python接口测试中—Requests模块的使用
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模块的使用的更多相关文章
- Python接口测试-使用requests模块发送GET请求
本篇主要记录下使用python的requests模块发送GET请求的实现代码. 向服务器发送get请求:无参数时:r = requests.get(url)带params时:r = requests. ...
- Python接口测试-使用requests模块发送post请求
本篇主要记录下使用python的requests模块发送post请求的实现代码. #coding=utf-8 import unittest import requests class PostTes ...
- Python接口测试,Requests模块讲解:GET、POST、Cookies、Session等
文章最下方有对应课程的视频链接哦^_^ 一.安装.GET,公共方法 二.POST 三.Cookies 四.Session 五.认证 六.超时配置.代理.事件钩子 七.错误异常
- 孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块
孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块 (完整学习过程屏幕记录视频地址在文末) 从今天起开始正式学习Python的爬虫. 今天已经初步了解了两个主要的模块: ...
- Python爬虫练习(requests模块)
Python爬虫练习(requests模块) 关注公众号"轻松学编程"了解更多. 一.使用正则表达式解析页面和提取数据 1.爬取动态数据(js格式) 爬取http://fund.e ...
- 关于解决Python中requests模块在PyCharm工具中导入问题
问题引入: 今天在学习Python网络请求的时候,导入requests模块时一直报红色波浪线,如图: 反复折腾,一直以为自己没有安装requests模块,反复安装反复卸载: 安装方法: 首先 cd 进 ...
- python 中requests 模块用py2exe生成exe后SSL certificate exception的问题
[('system library', 'fopen', 'No such process'), ('BIO routines', 'BIO_new_file', 'no such file'), ( ...
- Python高手之路【八】python基础之requests模块
1.Requests模块说明 Requests 是使用 Apache2 Licensed 许可证的 HTTP 库.用 Python 编写,真正的为人类着想. Python 标准库中的 urllib2 ...
- Python 爬虫二 requests模块
requests模块 Requests模块 get方法请求 整体演示一下: import requests response = requests.get("https://www.baid ...
随机推荐
- watir学习系列--对话框处理(转)
1.下面是网上编写的类库,保存为libAutoit.rb #LibAutoit主要处理windows弹出的对话框,调用autoit类进行处理 #函数如下: #- ChooseFileDialog函数: ...
- @RequestMapping注解学习
1.@RequestMapping注释用于映射url到控制器类或一个特定的处理程序方法.可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径. 参考地址:https://ww ...
- Android 客户端应用开发结构框架
本文算是一篇漫谈,谈一谈关于android开发中工程初始化的时候如何在初期我们就能搭建一个好的架构.关于android架构,因为手机的限制,目前我觉得也确实没什么大谈特谈的,但是从开发的角度,看到整齐 ...
- git 常用的分支技巧
分支branch作为git一个强大功能,在平时开发如果能够善加使用,定能成倍提升开发效率. 1.分支开发模式 主分支master上一般是稳定版本,需要保证随时都能发布. 所以,可以建立一个开发分支用于 ...
- 权重随机算法Java实现
权重随机算法在抽奖,资源调度等系统中应用还是比较广泛的,一个简单的按照权重来随机的实现,权重为几个随机对象(分类)的命中的比例,权重设置越高命中越容易,之和可以不等于100: 简单实现代码如下: ? ...
- 浏览器端-W3School-HTML:HTML DOM cells 集合
ylbtech-浏览器端-W3School-HTML:HTML DOM cells 集合 1.返回顶部 1. HTML DOM cells 集合 HTML DOM Table 对象 定义和用法 cel ...
- flask包request搭建微服务(模拟测试桩)
from flask import Flask,requestimport json app=Flask(__name__)@app.route('/outsideWeb/integration/qr ...
- Python OOP知识积累
目录 目录 前言 对象 类 面向对象 Python 面向对象编程三个基本特征 封装 继承 继承的作用 泛化与特化 实现继承的方式 多重继承 多态 方法多态 最后 前言 Python是一个功能非常强大的 ...
- JS点击img图片放大再次点击缩小JS实现 简单实用Ctrl+C+V就可以用
业务需要,从后台获取的图片列表,用img标签展示,用户需要查看大图.记录下来以便学习和参考.示例图如下: 放大之前: 放大之后: 点击后放大(由于图片高度超出了页面,需要通过overflow:auto ...
- 微软永恒之蓝ms17010补丁下载-wannacry
勒索病毒爆发:上百国家遭"感染",Windows勒索病毒恐怖蔓延!勒索病毒,掀起了全球上百个国家.数十亿用户对网络安全的恐慌,微软推出的永恒之蓝ms17010补丁下载专为勒索病毒专 ...