天天看点

F02_HttpRunner关联:提取固定名称方式的 SessionID

F02_HttpRunner关联:提取固定名称方式的 SessionID

F02_HttpRunner关联:提取固定名称方式的 SessionID

接着上一章项目案例分析,SessionID 存在于临时 cookie 中,HttpRunner 可以从cookie中直接提取需要的值,而且要求 cookie 的键名称必须是固定不变的,提取方式为:

extract:
 - 变量名称:  cookies.键名称
           

为了验证返回响应内容的正确性,需要在用例中进行断言处理。

  • 本用例请求对象为登录页面,需要从响应结果中判断返回的是否我们要的登录页面。
  • 在系统登录页面源代码中有用于提交用户名和密码的表单,表单起始标签里的 action 属性中有“index.asp”字样,仅出现于登录页面中,而且在整个页面源代码中只出现一次,我们就以它作为断言的判断依据。

正确返回的响应页面源代码中,表单起始标签为

<FORM ACTION="index.asp?action=login" METHOD="post" name="loginform">
           

以正则方式提取表单行中的“index.asp”关键字

  • 使用正则表达式 (.*) 代替 index.asp 关键字
  • 将代码中的双引号(")和问号(?)分别进行转义
  • 将通过正则提取出来的内容保存到变量(form)中
extract:
  - form: <FORM ACTION=\"(.*)\?action=login\" METHOD=\"post\" name=\"loginform\">
           

在测试用例中对提取的内容进行断言,判断是否提取成功

  • eq:判断是否相等
  • $form:从页面中提取的内容,相当于实际结果
  • index.asp:我们预期的内容,相当于预期结果
validate:
  - eq: [$form, index.asp]
           

最终完整的测试用例如下:

- config:
    name: index

- test:
    name: Get SessionID
    request:
      url: http://localhost/myweb/jxc/index.asp
      method: GET
    extract:
      # 从cookies中提取 sessionid 名称,此名称从抓包中获得
      - sid: cookies.ASPSESSIONIDCCDBQQCA
      - form: <FORM ACTION=\"(.*)\?action=login\" METHOD=\"post\" name=\"loginform\">
    validate:
      - eq: [status_code, 200]
      - eq: [$form, index.asp]
           

验证用例,有效:

命令: hrun --validate <用例名称>

F02_HttpRunner关联:提取固定名称方式的 SessionID

执行用例,成功:

命令: hrun <用例名称>

F02_HttpRunner关联:提取固定名称方式的 SessionID

查看报告:

提取数据和验证都成功

F02_HttpRunner关联:提取固定名称方式的 SessionID