添加请求信息(响应提取)
例如,在电商抢购场景中,您搜索对应的商品之后购买该产品,可使用响应提取功能,提取“搜索”报文得到的商品id作为下一个“购买”报文的输入参数。

- 响应提取不支持跨用例提取,即从用例A的报文的响应中提取值作为用例B报文的输入。
- 响应提取的变量为局部变量。
操作步骤
- 登录CPTS控制台,在左侧导航栏中选择“CPTS测试工程”。
- 在待编辑CPTS测试工程所在行,单击“编辑测试任务”。
- 在“测试任务”页签中,选择待添加请求信息的用例,单击“添加请求”。
- 请求组成设置为“响应提取”,参照表1设置基本信息。图1 响应提取
表1 响应提取参数 参数
参数说明
启用响应提取
启用响应提取后,如果同一用例中存在多个报文,通过正则表达式把前一个报文的输出提取出来,作后一个报文的输入。
变量名称
变量的名称,命名必须唯一,响应提取的值赋予此变量。
预期值
预期响应提取出的变量值。
开启后,会将响应提取到的值与预期值进行比对,若不等则链接失败。
提取内容范围
响应提取内容的范围。
其中,“报文内容”、“头域”和“URL”可通过正则表达式进行内容提取。
正则表达式
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
完整的正则表达式由两种字符构成:特殊字符(special characters)称为“元字符”(meta characters);其它为“文字”(literal),或者是普通文本字符(normal text characters,如字母、数字、汉字、下划线)。元字符的说明请参见正则表达式元字符。
说明:“()”表示提取,对于您要提取的内容需要用小括号括起来,每个“()”之间的内容表示一个子表达式。
第几个匹配项
在正则表达式已提取的内容中,获取第几个匹配的内容。
取值范围:正整数。
说明:该参数值不可设置为0。
表达式取值
表示解析到的第几个子表达式的值。
取值范围:自然数。
说明:- 取值为0:匹配整个正则表达式。
- 取值为1:匹配正则表达式的第一个子表达式即第一个“()”提取的内容。
通过“正则表达式”和“第几个匹配项”提取出内容后,再通过“表达式取值”获得最终的提取内容。
需获取的键名
输入需要获取的键名。
例:{"key":{"key1":"v1","key2":{"key3":"v3"},"key4":[{"key41":"v41","key42":"v42"},{"key41":"v43","key42":"v44"}]}},若想取出"v42",则输入:key.key4[0].key42。
说明:仅在提取内容范围是json内的值时生效。
缺省值
正则匹配或JSON提取失败时,取的值。
条件表达式
与“需获取的键名”配套使用。
例如:{"key":{"key1":"v1","key2":{"key3":"v3"},"key4":[{"key41":"v41","key42":"v42"},{"key41":"v43","key42":"v44"}]}},如果需要表达:当key42=v42时,提取目标值v41;则在“条件表达式”框里输入:key.key4[].key42 = v42,在"需获取的键名"框里输入:key.key4[].key41。
表2 常用正则表达式介绍 正则表达式
说明
示例
(\d+)
匹配非负整数
字符串:
bTivm2wu9jih1LBKR4osZGrjjl
匹配结果:
2 9 1 4
([A-Za-z]+)
匹配由26个英文字母组成的字符串
字符串:
bTivm2wu9jih1LBKR4osZGrjjl
匹配结果:
bTivm wu jih LBKR osZGrjjl
([A-Za-z0-9]+)
匹配由数字和26个英文字母组成的字符串
字符串:
bTivm2wu9jih1LBKR4osZGrjjl:asdasd22
匹配结果:
bTivm2wu9jih1LBKR4osZGrjjl asdasd22
(\w+)
匹配由数字、26个英文字母或者下划线组成的字符串
字符串:
bTivm2wu9jih1LBKR4osZGrjjl:asdasd22
匹配结果:
bTivm2wu9jih1LBKR4osZGrjjl asdasd22
([\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+)
匹配email地址
字符串:
bTivm2wu9jih1LBKR4osZGrjjl:abc@abc.com
匹配结果:
abc@abc.com
- (可选)一个请求信息可包含1个或多个变量,若您的请求信息需要添加多个变量,请单击“添加变量”,再设置变量的相关参数。
- 配置完成后,单击“确定”。
响应提取示例二
例如,前一个报文响应的报文内容为:
javawind:9javawind:12 javawind:16javawind:17 javawind:46javawind:22
如果想要提取数值16,响应提取的设置如图4所示。
- 通过正则表达式javawind:(.*)javawind:(.*),提取数据如下:
9 12 16 17 46 22
- 通过第2个匹配项,提取数据如下:
16 17
- 通过第1个表达式,提取数据如下:
16
