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 ...
随机推荐
- LeetCode 55. 跳跃游戏(Jump Game)
题目描述 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个位置. 示例 1: 输入: [2,3,1,1,4] 输出: ...
- Spring MVC Post请求返回403错误,Get请求却正常,可能是安全框架引起的前端解决办法
原文地址:http://blog.csdn.net/t894690230/article/details/52404105 困惑:很奇怪,明明在方法上面配置了RequestMethod.POST,PO ...
- Mysql事务特性
事务概念 事务可由一条sql或者一组sql组成.事务是访问并更新数据库中各种数据项的一个程序执行单元. 事务会把数据库从一种一致状态转换为另一种一致状态.在数据提交工作时,可以确保要么所有修改都已经保 ...
- python学习之迭代器
4.5 迭代器 4.5.1 可迭代对象 **字面意思分析**:可以重复的迭代的实实在在的东西. list,dict(keys(),values(),items()),tuple,str,set,ran ...
- python学习之数据类型(tuple)
3.6 元组 v = (11,22,33,'asd','汉字') 元组就是不可变的列表,又叫制度列表,属性特征与字符串相似,里边可以存放任何类型的元素. 1.元组的元素 这里元组的不可变的意思是⼦元素 ...
- 【神经网络与深度学习】如何将别人训练好的model用到自己的数据上
caffe团队用imagenet图片进行训练,迭代30多万次,训练出来一个model.这个model将图片分为1000类,应该是目前为止最好的图片分类model了. 假设我现在有一些自己的图片想进行分 ...
- 【VS开发】【智能语音处理】MATLAB 与 音频处理 相关内容摘记
MATLAB 与 音频处理 相关内容摘记 MATLAB 与 音频处理 相关内容摘记 1 MATLAB 音频相关函数 1 MATLAB 处理音频信号的流程 2 音量标准化 2 声道分离合并与组合 3 数 ...
- 手把手带你发布Nuget包-图文说话
博客:https://www.cnblogs.com/24klr/
- python 并发编程 异步IO模型
异步IO(Asynchronous I/O) Linux下的asynchronous IO其实用得不多,从内核2.6版本才开始引入.先看一下它的流程: 用户进程发起read操作之后,立刻就可以开始去做 ...
- Linux集群之间配置NTP时间同步ntp
NTP时间同步 注意事项 要注意的是,ntpd 有一个自我保护设置: 如果本机与上源时间相差太大, ntpd 不运行. 所以新设置的时间服务器一定要先 ntpdate 从上源取得时间初值, 然后启动 ...