调用登录接口登录了,其他的接口怎么保持登录状态呢?
  首先来看一看,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. Web应用界面好帮手!DevExtreme React和Vue组件全新功能上线

    行业领先的.NET界面控件DevExpress 正式发布了v19.1版本,本文将主要介绍DevExtremev19.1中React组件响应式应用程序布局模板及CLI工具.本地React图表,和Vue组 ...

  2. python中的apply(),applymap(),map() 的用法和区别

    平时在处理df series格式的时候并没有注意 map和apply的差异 总感觉没啥却别.不过还是有区别的.下面总结一下: import pandas as pd df1= pd.DataFrame ...

  3. 洛谷-p5410-扩展KMP模板

    链接: https://www.luogu.org/problem/P5410#submit 题意: 有两个字符串aa,bb,要求输出bb与aa的每一个后缀的最长公共前缀 思路: 扩展kmp模板, 上 ...

  4. django之ORM的查询优化、Ajax 06

    目录 ORM查询优化 only与defer select_related与prefetch_related查询优化 choices参数 MTV与MVC模型 Ajax简介 AJAX常见应用情景 AJAX ...

  5. 设计一个Mypoint类,求两个点之间的距离

    package Test; public class test6 { public static void main(String[] args) { // TODO Auto-generated m ...

  6. 题解 【SCOI2015】小凸玩矩阵

    题面 解析 这题其实也是网络流建图.. 首先,转换下思路, 求第k大的数的最小值, 其实就是求一个最小的值, 使选取的点中能有(n-k+1)个的值比它小. 因此,可以采用二分答案, 每次判断一个值, ...

  7. TTTTTTTTTTTTTTTT hdu 5510 Bazinga 字符串+哈希

    Bazinga Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  8. matplotlib中 plt.plot() 函数中**kwargs的参数形式

    plt.plot(x, y, **kwargs) **kwargs的参数大致有如下几种: color: 颜色 linestyle: 线条样式 marker: 标记风格 markerfacecolor: ...

  9. AcWing:99. 激光炸弹(前缀和)

    一种新型的激光炸弹,可以摧毁一个边长为 RR 的正方形内的所有的目标. 现在地图上有 NN 个目标,用整数Xi,YiXi,Yi表示目标在地图上的位置,每个目标都有一个价值WiWi. 激光炸弹的投放是通 ...

  10. Miller Robin大素数判定

    Miller Robin算法 当要判断的数过大,以至于根n的算法不可行时,可以采用这种方法来判定素数. 用于判断大于2的奇数(2和偶数需要手动判断),是概率意义上的判定,因此需要做多次来减少出错概率. ...