前言
在进行接口测试的过程中,需要提取响应数据的指定参数值来做断言,或者作为下一个接口的入参,此时需要用到“提取”的功能,类似于jmeter的提取器的功能,对应在HttpRunner里面提取对象的关键字是extract。
提取数据,分为两种:
- 提取response-body
- 提取response-headers
一、提取响应数据
如果接口返回的是一个json数据类型,可以用content来获取对应参数的values
content取值的方式有两种:
- content.key
- content.int
- 通过正则表达式提取
content.key
将response转化成python的dic类型数据
content.msg 取出msg后面的对应值“操作成功!”
content.data.redirectUrl取出redirectUrl后面重定向的网址
脚本t
extract:
- msg: content.msg
- msg: content.data.redirectUrl
content.int
将response转化成python的list类型数据
content.0 代表获取第一个list数据
content.1. cancelLimitation 代表获取第2个list内的cancelLimitation 对应的value值
正则表达式提取
想要提取响应结果的部分字符串数据时,就不能通过content来提取,这时可以通过正则表达式来匹配获取。
脚本
extract:
- token: token=(.*?)"
二、提取信息头/cookie数据
在 HTTP 响应中,通过响应头设置 cookies 记录用户信息以及身份凭证。用 HttpRunner 编写测试用例的时候,模拟用户身份就需要从中提取 cookies 信息。
实现 cookies 提取有多种方式,如:
通过 cookies 关键字提取全部 cookies;
通过 cookies.xxxxx 获取某个名称的 cookie 值
通过 headers.Set-Cookie 提取全部 cookies;
通过 headers.Set-Cookie.xxxxx 获取某个名称的 cookie 值;
获取headers指定数据,语法:
#提取器
extract:
- msg: content.description
- Token: headers.Set-Cookie #获取response-headers的set-cookie的全部值
- num: headers.Content-Type #获取response-headers的Content-Type值
- cok: cookies.MMC_TOKEN #获取response-headers的set-cookie的MMC_TOKEN的值
使用获取到的cookie值,通过“$参数名”进行引用