Skip to the content.

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进行注册

  1. 在工程的 resources 目录中创建目录 META-INF
  2. 在 META-INF 目录中创建目录 services
  3. 在 services 目录中创建文件 core.xyz.migoo.testelement.TestElement
  4. 在 core.xyz.migoo.testelement.TestElement 文件中填写 自定义提取器的完整类名(含包路径)

参考示例