JSON 提取器
当取样器\处理器响应数据为JSON时,可通过 JSON提取器 将指定JSONPATH的值提取到指定变量中
testclass: json_extractor # json 提取器类型
field: '$.status' # 提取的 json path
variable_name: status # 变量名称
或
{ testclass: json_extractor, field: '$.status', variable_name: status }
testclass:定义取样器类型,可选值:JSONExtractor 、json_extractor
field:定义 提取值的 JSON PATH
variable_name:定义提取值关联的变量名称
Regex 提取器
当取样器\处理器响应数据为HTML、XML或其他复杂文本时,可通过 Regex提取器 将匹配的的值提取到指定变量中
testclass: regex_extractor # regex 提取器类型
field: '(\\d+)' # 提取的 正则表达式
match_num: 0 # 匹配到多个时,取哪一个值
variable_name: status # 变量名称
或
{ testclass: regex_extractor, field: '$.status', match_num: 0, variable_name: status }
testclass:定义取样器类型,可选值:RegexExtractor 、regex_extractor
field:定义 匹配提取值的正则表达式
match_num:当匹配到多个值时,取第几个值,从 0 开始计数,默认值 0
variable_name:定义提取值关联的变量名称
Result 提取器
将取样器\处理器响应数据整个提取到指定变量中
testclass: result_extractor # result 提取器类型
variable_name: status # 变量名称
或
{ testclass: result_extractor, variable_name: status }
testclass:定义取样器类型,可选值:ResultExtractor 、result_extractor
variable_name:定义提取值关联的变量名称
二次开发
当内置的提取器无法满足使用要求时,可以自行开发提取器组件
示例:
// Alias 定义组件的别名,以便在 testclass 中引用,默认为类名
// 为防止类名重复,建议使用 Alias
@Alias({"CustomExtractor", "custom_extractor"})
public class CustomExtractor extends AbstractExtractor {
@Override
public SampleResult process(SampleResult result) {
var data = result.getResponseDataAsString(); // 获取 取样器 或 处理器的响应数据
// todo 自定义提取规则
return getResult(new SampleResult("CustomExtractor"));
}
}
通过以上代码完成自定义提取器开发后,还需要通过 SPI进行注册
- 在工程的 resources 目录中创建目录 META-INF
- 在 META-INF 目录中创建目录 services
- 在 services 目录中创建文件 core.xyz.migoo.testelement.TestElement
- 在 core.xyz.migoo.testelement.TestElement 文件中填写 自定义提取器的完整类名(含包路径)
参考示例