专栏首页编程python接口测试之token&session处理

python接口测试之token&session处理

在做接口的自动化测试中,无法绕过cookie,某些时候我们需要处理,那么怎么处理?另外一个方面,什么是cookie?cookie它的工作机制是用户识别以及状态管理,网站为了管理用户的状态会通过web的浏览器,把一些数据临时写入用户的计算机内,用户再次访问web站点的时候,可通过通信方式取回之前存放的cookie,调用cookie时,检验cookie的时效。

session是存储在服务器端的,使用session来保持会话,在实际的产品测试中,特别是移动互联网的产品是,大多数是token,那么token我们简单的可以理解是就是令牌,原理上是通过session来实现的,也就是说,在登录的时候,是客户端请求服务器的一个过程,登录成功后,服务器端会生成一个随机的字符串也就是说是token,并且把token放在session中,然后把token返回给客户端,客户端带着这个token,就可以对系统的业务进行操作。token每次登录后,返回是都是不同的那么也就是说,在产品的接口自动化测试中,如果要对系统进行接口的自动化测试,那么首先需要获取token,获取token的整个思路为:

A.先进行登录

B.登录成功后

C.获取token

D.把获取的token当作下一个接口的请求参数

下面通过工具,代码的方式分别来讲下如何获取token,以及对token的处理,工具我们这里使用大家经常时候并且的postman,jmeter,代码使用python,在这里我们一次性的解决token的获取和处理。我们先来看我们需要处理的程序究竟是怎么样的,见登录的请求过程,见截图:

见登录的响应正文,返回了token,见截图:

我们再见下一个接口,它的参数必须得带token,并且这个token是登录成功后返回的token,见截图:

见该接口的请求正文,见截图:

通过如上截图我们知道,它的请求正文是token,并且这个token与登录成功后返回的token必须是一一对应的。如上的接口测试大概步骤为:

1、调用login的接口,login的接口调用成功后,返回token

2、登录成功后的请求都必须带这个token,否则就会出现token无效请求出现401无权限的操作,那么如何获取token,让token成一个变量,供后面的接口来进行调用了?这就是下面要进行说的。

我们首先在postman中完成login的接口,见截图:

请求参数见截图:

点击send,见请求成功后返回的json字符串,见截图:

现在我们来进行操作获取token和对该接口的测试用例进行断言,这些操作都是在Tests中进行的,见Tests的js代码:

注释:在如上的代码中,我们对返回的json字符串进行了解析,然后把获取的token放在了token的变量中。同时也对login的接口做了断言,执行成功后,见断言的结果,见截图:

如果断言失败,也会提示的,这里不在详细的演示。下面我们来进行另外一个接口,也就是infoGet的接口,见该接口的请求路由,和请求参数:

我们看到,它的请求参数是token,而这个token就是每次登录成功后的token,我们点击send看下,看执行的结果,见截图:

出现502,验证信息已失效,为什么会出现这样的结果了,这个很好理解,这是因为,我们在执行infoGet接口的时候,它的token与我们登录成功后的token不一致,所以就是无效,我们在login的接口中,对响应正文中获取了token,并且把该token放在了变量token,那么就需要在infoGet的接口中,我们直接调用这个变量就可以了,调用的方式为,见如下的结果:

我们把login和infoGet的接口添加到一个collection中(关于postman的collection不知道的,可以看我的博客python接口测试之postman),该cllection的名称是blog,我们执行collecion,见截图:

点击run,来进行执行,见执行后的结果,见截图:

见ingoGet的请求正文截图:

再见infoGet接口的响应正文内容,见截图:

为了让测试具备完整性,我们给接口infoGet增加断言,见增加的断言,见截图:

再次对collection进行执行,见执行的结果:

本文来自企鹅号 - python自动化测试媒体

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 经纬中国邵亦波:区块链部分应用即使做成也不会创造太多价值

    腾讯创业讯 1月9日消息,经纬中国创始管理合伙人邵亦波再次发声区块链,称区块链会颠覆很多行业,也一定创造出一些之前不能想象的应用和公司,但目前很多想当然的应用即...

    企鹅号小编
  • 从 GitHub 上获取文件内容

    我依稀记得 Java 的 Spring Cloud 中有一个重要的部分就是集中配置: 如图所示,将后台服务的配置文件集中存储于远程的GitHub库,然后通过配置...

    企鹅号小编
  • 信息论与逻辑回归代价函数

    本公众号文章:第4节 认知过程与逻辑回归描述了逻辑回归的原理,并且从数学上推导了逻辑回归代价函数的公式,但为什么采用这个公式需要从信息论的角度去说明。 信息论研...

    企鹅号小编
  • Spring Cloud OAuth2 实现用户认证及单点登录

    OAuth 2 有四种授权模式,分别是授权码模式(authorization code)、简化模式(implicit)、密码模式(resource owner ...

    古时的风筝
  • vue- axios设置全局请求头

    一般在前后端分离的情况下,后台提供的restful接口,为了确保接口的安全性。必须设置一些相关的安全认证,这里是对如何使用tokne进行安全验证的设置

    java攻城狮
  • Flask 博客接入第三方登录

    Flask不像Django一样有各种现成的组件可以选用,Flask的各种扩展也不那么「开箱即用」。在我的博客项目中,我选用的是Authlib,它是国内的一名Py...

    岂不美哉Frost
  • 基于Flask开发企业级REST API应用(三)

    前两章把程序的结构以及 API的协议基本上搭建起来了。本文开始不打算对每个模块接口都进行实现,因为基本上都是业务逻辑代码,而且整篇文章都把代码贴出来,那将是一个...

    阳仔
  • Sprinig Boot优雅实现接口幂等性,原来这么简单!

    幂等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次

    黄泽杰
  • springboot + redis + 注解 + 拦截器 实现接口幂等性校验

    幂等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次

    java思维导图
  • Python接口自动化之Token详解及应用

    在上一篇Python接口自动化测试系列文章:Python接口自动化之cookie、session应用,介绍了cookie、session原理及在自动化过程中如何...

    ITester软件测试小栈

扫码关注云+社区

领取腾讯云代金券