python自动化测试中requests.request()跟session().request()区别详解

python在进行项目自动化测试过程中对于遇到的requests.request()和session().request()进行接口自动化的封装

1.requests.request()的用法

    接口请求的方式有四种,get/post/put/delete

import request
requests.post('xxxxx')   #请求服务器接受所指定的文档作为对所标识的URI的新的从属实体
requests.put('xxxxx')   #客户端向服务器传送的数据取代指定的文档的内容
requests.delete('xxxxx')  #  请求服务器删除指定的页面
request.get('xxxxxx')  # 请求指定的页面信息,并返回实体主体。

注意: GET:请求将提交的数据放置在HTTP请求协议头中;POST:提交的数据则放在实体数据中

  以上四种方式都可以使用一种方式替代

import requests
requests.request(mode,url='xxxx',headers='xxxx',data='xxx')
#mode 方式可以是post/get/put/delete
2.两者的区别

requests.request()的生命周期就是一次请求,当结果输出之后,request就结束了

而session的生命周期也是针对一个客户端,但是却是在别人设置的会话周期内(一般是20-30分钟),session里边的内容将一直存在,即便关闭了这个客户端浏览器 session也不一定会马上释放掉的。

场景举例:

(1)登录商城

 (2)查询积分

这个涉及到两个接口,一个是登录接口一个是登录以后查询积分的接口,如果使用requests.request()是先拿到登录接口对应的cookie然后用于下一个接口的查询

常规用法(伪代码)

import requests
# 登陆接口
response1 = requests.get(url_login,params,headers)
# 获取cookies信息
cookies = response.cookies
# 得到的cookies 是一个字典类型
cookie = cookies.get("cookies的key")
# 请求 查询接口
response2 = requests.get(search_url,params,headers,cookies=cookie)
# 查看查询响应的结果
response2.json()

使用session代码如下(对于多个接口中会有关联cookies的一般推荐使用requests.session()):

# 以下代码纯为了举例,没有效果的伪代码
import requests
# 获取 session对象
session = requests.session()
# 登陆接口
response1 = session.get(url_login,params,headers)
# 请求 查询接口
response2 = session.get(search_url,params,headers)
# 查看查询响应的结果
response2.json()

区别:request占用资源比较少,安全性也比较高,可是相对来说缺乏持续性。

session则相对来说对资源的消耗会大点,安全性相对来说也会稍微低点,可是它能实现比如会话跟踪技术。如果可以使用request的情况下,尽量使用request 因为相对于服务器来说资源的消耗还是比较重要的。在传递页面过程中request传递到下一页面就不能再传递了,而sesison却不如此,即request仅限于2个相邻的页面,每按一个网页上的一个链接就是一个新的request,当服务器返回给浏览器一个response时,request就结束了,此时保存在request中的对象就不存在了,但是当你用一个浏器连到服务器上时application-server会新开一个session给你,当连接超时或浏览器关闭时session才销毁。所以session可以跟踪用户的状态。

session相当于是一个客户端的全局变量,

比如A机与服务器第一次访问时设置session.setAttribute("aaa")="ComputerA".则在A机继续访问的任意一个页面都可以取的session.getAttribute("aaa")的值是ComputerA;  
    
request是某一次访问的局域变量,

生命周期只是一次请求。因此login的变量应该放在session中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值