支持从响应头等对象中提取

This commit is contained in:
chenjianxing 2020-06-29 21:11:36 +08:00
parent 5cc1ff291a
commit 3667587e39
4 changed files with 22 additions and 5 deletions

View File

@ -6,6 +6,7 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Data @Data
public class ExtractRegex extends ExtractCommon { public class ExtractRegex extends ExtractCommon {
private String useHeaders;
public ExtractRegex() { public ExtractRegex() {
setType(ExtractType.REGEX); setType(ExtractType.REGEX);
} }

View File

@ -4,7 +4,7 @@
{{$t('api_test.request.extract.description')}} {{$t('api_test.request.extract.description')}}
</div> </div>
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="4"> <el-col :span="2">
<el-select :disabled="isReadOnly" class="extract-item" v-model="type" :placeholder="$t('api_test.request.extract.select_type')" <el-select :disabled="isReadOnly" class="extract-item" v-model="type" :placeholder="$t('api_test.request.extract.select_type')"
size="small"> size="small">
<el-option :label="$t('api_test.request.extract.regex')" :value="options.REGEX"/> <el-option :label="$t('api_test.request.extract.regex')" :value="options.REGEX"/>
@ -12,7 +12,7 @@
<el-option label="XPath" :value="options.XPATH"/> <el-option label="XPath" :value="options.XPATH"/>
</el-select> </el-select>
</el-col> </el-col>
<el-col :span="20"> <el-col :span="22">
<ms-api-extract-common :is-read-only="isReadOnly" :extract-type="type" :list="list" v-if="type" :callback="after"/> <ms-api-extract-common :is-read-only="isReadOnly" :extract-type="type" :list="list" v-if="type" :callback="after"/>
</el-col> </el-col>
</el-row> </el-row>

View File

@ -1,7 +1,12 @@
<template> <template>
<div> <div>
<el-row :gutter="10" type="flex" justify="space-between" align="middle"> <el-row :gutter="10" type="flex" justify="space-between" align="middle">
<el-col :span="10"> <el-col v-if="extractType == 'Regex'" :span="5">
<el-select :disabled="isReadOnly" class="extract-item" v-model="common.useHeaders" :placeholder="$t('api_test.request.assertions.select_subject')" size="small">
<el-option v-for="item in useHeadersOption" :key="item.value" :label="item.label" :value="item.value"/>
</el-select>
</el-col>
<el-col>
<ms-api-variable-input :is-read-only="isReadOnly" v-model="common.variable" size="small" maxlength="60" <ms-api-variable-input :is-read-only="isReadOnly" v-model="common.variable" size="small" maxlength="60"
@change="change" show-word-limit :placeholder="$t('api_test.variable_name')"/> @change="change" show-word-limit :placeholder="$t('api_test.variable_name')"/>
</el-col> </el-col>
@ -53,7 +58,17 @@
data() { data() {
return { return {
visible: false visible: false,
useHeadersOption: [
{label: 'Body',value:'false'},
{label: 'Request Headers',value:'request_headers'},
{label: 'Body (unescaped)', value:'unescaped'},
{label: 'Body as a Document', value:'as_document'},
{label: 'Response Headers', value:'true'},
{label: 'URL', value:'URL'},
{label: 'Response Code', value:'code'},
{label: 'Response Message', value:'message'}
]
} }
}, },

View File

@ -343,6 +343,7 @@ export class ExtractCommon extends ExtractType {
constructor(type, options) { constructor(type, options) {
super(type); super(type);
this.variable = undefined; this.variable = undefined;
this.useHeaders = undefined;
this.value = ""; // ${variable} this.value = ""; // ${variable}
this.expression = undefined; this.expression = undefined;
this.description = undefined; this.description = undefined;
@ -561,7 +562,7 @@ class JMXGenerator {
switch (extractCommon.type) { switch (extractCommon.type) {
case EXTRACT_TYPE.REGEX: case EXTRACT_TYPE.REGEX:
testName += " RegexExtractor"; testName += " RegexExtractor";
props.headers = "false"; // 对应jMeter body props.headers = extractCommon.useHeaders; // 对应jMeter body
props.template = "$1$"; props.template = "$1$";
return new RegexExtractor(testName, props); return new RegexExtractor(testName, props);
case EXTRACT_TYPE.JSON_PATH: case EXTRACT_TYPE.JSON_PATH: