M01_cookie整理:提取指定某个名称的 cookie 值

M01_cookie整理:提取指定某个名称的 cookie 值

 

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

 

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

  • 通过 cookies 关键字提取全部 cookies;
  • 通过 cookies.xxxxx 获取某个名称的 cookie 值
  • 通过 headers.Set-Cookie 提取全部 cookies;
  • 通过 headers.Set-Cookie.xxxxx 获取某个名称的 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中文本,用于验证
      # 响应实体中包括文本: ....<form name="form1" action="user_del.asp">....
      - p_info: action="(.*)">

    validata:
      - eq: [status_code, 200]
      - eq: [$p_info, user_del.asp]

 

 

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

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

 

 

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

 

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

 

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

 

格式:

extract:
  - <变量名称>: cookies.<指定的 cookie 名称>

 

举例:

extract:
  - sessionid: cookies.ASPSESSIONIDQQBASCAA

 

 

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

格式:

request:
  headers:
    cookie:<指定的 cookie 名称>=<提取的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中文本,用于验证
      # 原始文本为:  ....<a HREF="main.asp">.....
      - 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中文本,用于验证
      # 原始文本为: ....<form name="form1" action="user_del.asp">....
      - p_info: action="(.*)">

    validata:
      - eq: [status_code, 200]
      - eq: [$p_info, user_del.asp]

 

 

执行该用例:

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值