A12_HttpRunner_cookie整理_01_提取指定cookie值

在 HTTP 响应中,通过响应头设置 cookies 记录用户信息以及身份凭证。用 HttpRunner 编写测试用例的时候,模拟用户身份就需要从中提取 cookies 信息。

实现 cookies 提取有多种方式,如:

  • 通过 cookies 关键字提取全部 cookies;
  • 通过 cookies.xxxxx 获取某个名称的 cookie 值
  • 通过 headers.Set-Cookie 提取全部 cookies;
  • 通过 headers.Set-Cookie.xxxxx 获取某个名称的 cookie 值;
  • 通过 debugtalk.py 外置函数获得 cookie 值;

1. 提取指定名称的 Cookie 值

登录系统后打开用户管理页面,抓包分析如下:

  • 请求地址:http://localhost/myweb/jxc/system/user.asp
  • 请求方法:GET

在请求头中附加了cookie信息,存储的是 SessionID 的值,此 cookie 是在第一次访问系统时服务器返回的。

首先不附加 cookie,编写测试用例:

- config:    name: 员工管理- test:    name: 测试步骤 - 打开员工管理页面    request:      url: http://localhost/myweb/jxc/system/user.asp      method: GET    extract:      # 提取HTML中文本,用于验证      # 响应实体中包括文本: ........      - p_info: action="(.*)">    validata:      - eq: [status_code, 200]      - eq: [$p_info, user_del.asp]

执行以上测试用例,显示失败。

显示用例中提取(extract)数据失败。继续往下看,发现返回的响应实体内容不是我们预期的内容,说明以上用例打开“员工管理”页面失败。

失败原因比较容易分析,我们没有经过登录操作,试图直接访问系统内部页面,肯定是不允许的。那么这里的关键就是此用例中没有证明已经登录成功这件事儿。前面抓包中的 cookie 那行数据,其实就是代表登录成功与否的关键。

所以我们应该从登录的响应信息中获取 cookie,再把此 cookie 附加到打开“员工管理”的测试用例中。

先看看如何提取一个指定名称的 cookie 吧。

格式:

request:  url: http://localhost/myweb/jxc/system/danwei.asp  headers:    cookie: ASPSESSIONIDQQBASCAA=$sessionid

举例:

extract:  - sessionid: cookies.ASPSESSIONIDQQBASCAA

在后续请求中使用该 cookie 方法:

格式:

request:  headers:    cookie:=

举例:

request:  url: http://localhost/myweb/jxc/system/danwei.asp  headers:    cookie: ASPSESSIONIDQQBASCAA=$sessionid

本次实验我们将编写两个独立的用例文件,实验过程如下:

  1. 编写登录测试用例,并提取 cookie 值,文件名:login.yml
  2. 编写打开“员工管理页面”用例,文件名:user.yml
  • 步骤1:调用登录用例,获取cookie并输出
  • 步骤2:附加以上cookie 值,打开员工管理页面

1. 编写登录测试用例,并提取 cookie 值,文件名:login.yml

- config:    name: 登录操作- test:    name: 测试步骤 - 进行登录操作    request:      url: http://localhost/myweb/jxc/index.asp?action=login      method: POST      data:        username: admin        pwd: admin      allow_redirects: FALSE    extract:      # 此处提取 cookie,即 SessionID 信息        - p_sid: cookies.ASPSESSIONIDQQBASCAA      # 提取HTML中文本,用于验证      # 原始文本为:  .........      - p_info: HREF="(.*)">    validata:      - eq: [status_code, 302]      - eq: [$p_info, main.asp]

2. 编写打开“员工管理页面”用例,附加以上cookie 值,文件名:user.yml

- config:    name: 员工管理- test:    name: 测试步骤 - 调用登录测试用例    testcase: login.yml    # 输出提取的 cookie 值    output: [p_sid]- test:    name: 测试步骤 - 打开员工管理页面    request:      url: http://localhost/myweb/jxc/system/user.asp      method: GET      headers:        # 附加前面用例提供的 cookie 值        cookie: ASPSESSIONIDQQBASCAA=$p_sid    extract:      # 提取HTML中文本,用于验证      # 原始文本为: ........      - p_info: action="(.*)">    validata:      - eq: [status_code, 200]      - eq: [$p_info, user_del.asp]

执行该用例:

如何在用例之间传递值_接口测试:A12_HttpRunner_cookie整理_01_提取指定cookie值相关推荐

  1. java 数组的索引值_按索引访问Java数组位置的值

    我是 Java的新手,我只是在努力使用数组.我有一段代码,我在编写教程时已经编写过,但我很难理解它,如果有人能向我解释,我会很高兴. 我尝试过各种不同的方法(向我的鸭子解释,写下来等等)并且仍然无法理 ...

  2. vba 提取 json某个值_利用VBA字典,提取两列数据的重复值

    大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解第52讲:利用字典,提取两列数据重复值.有人讲:字典是VBA中最为精华的部分,持这种观点的人肯定有自己的道理,确实,利用字典可以给我的代码带来 ...

  3. JS 获取指定 Cookie 值

    我们知道在 JS 中,只能通过 document.cookie 获取到当前网页的 Cookie,返回的是以 ; 隔开的 Cookie 键值对字符串.在日常开发中,可以使用 js-cookie 包来操作 ...

  4. 如何在用例之间传递值_如何从0搭建自己的自动化测试体系

    大家好,我是爱吃面条,今天给大家讲讲如何从0搭建自己的自动化测试体系 1. 需求和目标 在我开展自动化测试之前,其实该项目以前的测试人员也已经写了很多的接口测试用例,但是大多数用例处于"半瘫 ...

  5. list修改元素的值_第115天:Python 到底是值传递还是引用传递

    我们平时写的 Python 程序中充斥着大量的函数,包括系统自带函数和自定义函数,当我们调用函数时直接将参数传递进去然后坐等接收返回值即可,简直不要太好用.那么你知道函数的参数是怎么传递的么,是值传递 ...

  6. mysql存储过程返回多个值_数据库mysql存储过程之返回多个值的方法示例

    本文实例讲述了mysql存储过程之返回多个值的方法.分享给大家供大家参考,具体如下: mysql存储函数只返回一个值.要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程.咱们先来 ...

  7. sql如何处理null值_如何正确处理SQL中的NULL值

    sql如何处理null值 前言 (Preface) A friend who has recently started learning SQL asked me about NULL values ...

  8. python 卡方分布值_饱和模型与偏差计算R方与p值

    引言:logistic回归中,我们了解到R2和P值的计算方法.但josh starmer老师指出,广义线性模型中R2更常见的计算方法还包括饱和模型(参考:Logistic回归:R2与P-value的计 ...

  9. jq多选按钮值_关于jquery的多选框获取值和状态回显

    最近开发一个新功能模块设计到状态多选框的勾选及查询后状态的回显保留. 需求:在页面当点击状态多选框时 实现option的勾选状态,把对应的option的value值赋给 在form表单的隐藏input ...

最新文章

  1. vue cli 项目在打包时候报错解决方法
  2. 【广义找零钱问题】 贪心算法求解进制转换问题
  3. New Distinct Substrings(后缀数组)
  4. cppcheck的安装和使用
  5. Hadoop集群(四) Hadoop升级
  6. 现实世界的Windows Azure:Quest Software and OnDemand Migration for Email
  7. MySQL Pool
  8. 树莓派python编程小车_树莓派小车教程(三)——软件代码
  9. 【损失函数】Focal Loss for Dense Object Detection And RetinaNet
  10. 中国城市经纬度表(精确到县区)Google地图用
  11. DMS - 简介 Driver Monitor System
  12. DB2查看事务日志使用空间
  13. 利用tcp三次握手,使用awl伪装MAC地址进行多线程SYN Flood
  14. 路由配置url跳转传参_如何配置路由器以进行网络范围的URL记录
  15. Java编程那些事儿70——抽象类和接口(三)
  16. 怎么压缩图片文件大小?小白都能学会的方法分享
  17. 基于SSH框架的二手物品交易网(Struts)
  18. Python3 小技巧三 每十个数取一次值
  19. Shader实现汽车氮气加速特效
  20. 【解决方案】视频结构化智能畜禽养殖场养猪场视频监控的实现,智慧养殖模式为养殖业加成

热门文章

  1. QT 调用 DLL 的三种方法
  2. vs中c#的项目配置,平台配置
  3. C#创建Access
  4. IOS开发基础之网易新闻环境搭建异步请求json,AFN网络封装第1天
  5. python多线程返回值_python获取多线程及子线程的返回值
  6. 2018年python薪资_2018年国内就业薪资高的7大编程语言排行
  7. 实习二 分组密码加密_分组密码加密模式
  8. .QT-制作最强电压电阻表盘,可以自定义阴影效果,渐变颜色,图标,文字标签等-附带demo程序
  9. java.lang.IllegalArgumentException: Can't find a no-arg constructor for class com.xiayiye.takeout.mo
  10. iis php重定向循环,iis和apache及PHP页面设置301重定向跳转方法