调用登录接口登录了,其他的接口怎么保持登录状态呢?
  首先来看一看,web端或者说客户端是怎么样用cookie/token等保持登录状态的。一般来说,cookie都会在登录接口由服务端返回,而且会是在header里面返回,并且,header里面有一个set-cookie这样的key,是的,就是这家伙,会把登录的cookie写到客户端的cookie缓存里,而后,当客户端要请求指向这个path的其它接口时,将此缓存的cookie塞到请求里面请求,服务端认得这个cookie,即认为后面的接口为已登录状态。
  当然,也不排除,有些变态的系统,cookie并不是由登录接口返回的。我碰到过一例,请求主页面时即返回set-cookie,然后客户端拿此cookie及用户名密码登录成功后,cookie激活。有点变态,不是常规实现,后来被重构了。还有些接口,直接把登录token啥的带在url里面,直接在url拼一拼就能完成鉴权。要具体问题具体分析,我接触的项目有限,只能讲讲比较常见的场景,给大家提供一些思路。
这是登录接口的返回headers截图:

比较常见的情况下,关键字create session会创建session对象,下一个请求带上session别名,该session对象会自动完成请求在上下文传递过程中的 Cookie 处理,如下面的例子:

另小伙伴们还可能有其他场景,如服务器间session共享,第二个请求要发往另一个host/域名,如某些app接口请求参数中需要带上cookie/token字段,部分SSO,这时候新请求可能需要创建另一个session,将cookie主动塞到session里面,f5可以看到create session关键字有个${cookies}参数,嗯,就是放到这里面,下图第11行脚本,注意是以键值对的方式传递的(抓包也看得出):

第8行有个把set suite variable的操作,目的是在此suite下还有跨域名(如其它二级域名)的请求,也可以使用该登录cookie值,只要cookie未过期,只要服务器的session能识别。第8行也是为了重构做准备。
 
第一次重构:
  因为登录是一个很多接口都会依赖的动作,所以要把它抽取成关键字,个人建议是放在suite setup里面,这样做的好处是,省去了每个用例中都去调一次登录接口的时间。关键字抽取,会抽取图2的1-5行,图3中的1-8行做为一个关键字,将用户名密码设为入参,重构完,大概会变成:

在这个suite中,是对banner功能点的接口测试集合,在suite setup里放了登录接口,用例一运行就先登录,名为newmanage的session保持了我的登录状态,其后的待测接口,都请求的同一个域名,因此使用alias为newmanage的get 和post请求,服务端认为已经登录,请求成功。

还有前面说的另外一种情况,在登录时已经把cookie最核心的键值对取出来了,所以待测接口需要的话,新建个seesion把该cookie塞进去就行了,至于如何写会使脚本更精炼合理,建议按实际情况重构脚本。嗯,最后养成好习惯,suite结束时delete all sessions放在suite teardown下。

使用robotframework做接口测试三——保持登录状态的更多相关文章

  1. 使用robotframework做接口测试二——处理响应数据

    初使用RequestsLibrary做接口测试时,你会不会感到困惑,为什么会有${resp.content}, ${resp.status_code}这样的写法,这个status_code什么鬼,f5 ...

  2. 使用robotframework做接口测试之一——准备工作

    最近发现做接口测试的朋友越来越多了,打算写一个系列的rf+requests做接口测试(主要是Http接口)的文档,可以帮助新入门的同学对接口测试有个大概的了解,同时也是敦促自己做总结的一种手段.希望经 ...

  3. 使用robotframework做接口测试5——一个用例中调多个接口

    凡是涉及一点点有接口关联的,都可能下一个接口需要上一个接口的某个返回值作为入参,最直接的例子,就是登录依赖.用接口做业务性的测试,也绝对离不开接口依赖的,业务都是一系列接口串联的结果,有时候一个接口操 ...

  4. 使用robotframework做接口测试4——搞定接口签名及密码加密

    接口签名是我做接口测试撞到的第一块石头,刚到新公司,本来想默默憋出来一个大招,然后碰到了签名接口,直接给跪了.于是只好找开发哥哥帮忙,把签名算法的java文件拿到,一行行对着用python实现了一遍. ...

  5. Struts2(三.用户登录状态显示及Struts2标签)

    1.编写main.jsp /WebContent/main.jsp 之前用户登录时已把用户存入session <%@ page language="java" content ...

  6. Postman+Postman interceptor的安装和使用-解决把chrome浏览器登录状态同步到postman进行有依赖的接口测试 Postman 使用方法详解

    Postman+Postman interceptor的安装和使用-解决把chrome浏览器登录状态同步到postman进行有依赖的接口测试   问题引入:做接口测试时,有依赖关系的接口往往不好测试( ...

  7. springboot 前后端分离开发 从零到整(三、登录以及登录状态的持续)

    今天来写一下怎么登录和维持登录状态. 相信登录验证大家都比较熟悉,在Javaweb中一般保持登录状态都会用session.但如果是前后端分离的话,session的作用就没有那么明显了.对于前后端分离的 ...

  8. Vue管理系统前端系列三登录页和首页及`vuex`管理登录状态

    目录 登录页面设计 vuex 对应 用户模块 丰富界面 首页相关代码 登录页面设计 该节记录了登录界面的设计,以及 vuex 的简单实用,然后将首页简单搭建完成. 先看最终效果图 先在 views 文 ...

  9. 使用Robot Framework做接口测试

    http://chuansong.me/n/1858477 1.RF框架 1.1 RF框架介绍Robot Framework 框架是一个通用的测试框架,一直是由诺西网络(Nokia Siemens N ...

随机推荐

  1. USRP B210 更改A通道或B通道

    USRP B210 更改A通道或B通道: 默认是A通道进行发射/接收,或设置 Mb0:Subdev Spec: A:A 设置B通道进行发射/接收,设置 Mb0:Subdev Spec: A:B

  2. 第七章 路由 70 路由-vue-router的基本使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  3. UVa156 Ananagrams(映射map)

    Ananagrams 题目 Most crossword puzzle fans are used to anagrams--groups of words with the same letters ...

  4. Acwing-164-可达性统计(拓扑排序, 位运算统计)

    链接: https://www.acwing.com/problem/content/166/ 题意: 给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量. 思路: 先拓扑排序求 ...

  5. ant-design-vue 修改组件样式

    /deep/ .ant-input { border-radius: 50px; }

  6. jmeter-请求头需要URIEncode编译时

    使用函数 ${__urldecode()} 例如 :${__urldecode(%E4%BB%93%E5%BA%93)}${__urldecode(${参数变量})}

  7. 33. ClustrixDB 扩展集群的容量-Flex up

    ClustrixDB被授权为每个节点的最大核数以及集群的最大节点数.如果需要扩展许可证,请联系Clustrix Sales.扩容之前检查License是否支持节点数. 一.准备节点 提供节点并在每个节 ...

  8. 【Python之路】特别篇--property()函数 和 @property 装饰符

    Python中有一个被称为属性函数(property)的小概念,它可以做一些有用的事情.在这篇文章中,我们将看到如何能做以下几点: 将方法转换为只读属性 重新实现一个属性的setter和getter方 ...

  9. 一、Django入门

    1.安装: 下载地址:https://www.djangoproject.com/download/ 原文节选: How to get Django Django is available open- ...

  10. 在py文件中运行flask cli命令

    主要是打包成exe之后,用于运行命令行. 命令行是 @app.cli.command() def mock(): ... 这样定义的 本来是用flask mock 这样方式运行的 打包后,希望用 ap ...