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 是在第一次访问系统时服务器返回的。

M01_cookie整理:提取指定某个名称的 cookie 值_第1张图片

 

 

首先不附加 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)数据失败。继续往下看,发现返回的响应实体内容不是我们预期的内容,说明以上用例打开“员工管理”页面失败。

M01_cookie整理:提取指定某个名称的 cookie 值_第2张图片

 

 

失败原因比较容易分析,我们没有经过登录操作,试图直接访问系统内部页面,肯定是不允许的。那么这里的关键就是此用例中没有证明已经登录成功这件事儿。前面抓包中的 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中文本,用于验证
      # 原始文本为:  .........
      - 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]

 

 

执行该用例:

M01_cookie整理:提取指定某个名称的 cookie 值_第3张图片

 

 

 

你可能感兴趣的:(接口自动化测试之,-,HttpRunner框架,接口测试,接口测试框架,cookie,HttpRunner,自动化测试)