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 <用例名称>
执行用例,成功:
命令: hrun <用例名称>
查看报告:
提取数据和验证都成功