fix(接口测试): 修复提取环境变量未更新环境的缺陷
This commit is contained in:
parent
05115b43ac
commit
2beebe8fbc
|
@ -1,11 +1,24 @@
|
|||
package io.metersphere.api.parser.jmeter.processor;
|
||||
|
||||
import io.metersphere.api.dto.ApiParamConfig;
|
||||
import io.metersphere.api.parser.jmeter.constants.JmeterAlias;
|
||||
import io.metersphere.api.parser.jmeter.constants.JmeterProperty;
|
||||
import io.metersphere.api.parser.jmeter.processor.extract.ExtractConverterFactory;
|
||||
import io.metersphere.plugin.api.constants.ElementProperty;
|
||||
import io.metersphere.plugin.api.dto.ParameterConfig;
|
||||
import io.metersphere.project.api.processor.ExtractPostProcessor;
|
||||
import io.metersphere.project.api.processor.extract.MsExtract;
|
||||
import io.metersphere.api.parser.jmeter.processor.extract.ExtractConverterFactory;
|
||||
import io.metersphere.plugin.api.dto.ParameterConfig;
|
||||
import io.metersphere.project.constants.ScriptLanguageType;
|
||||
import io.metersphere.project.dto.environment.EnvironmentInfoDTO;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.jmeter.extractor.JSR223PostProcessor;
|
||||
import org.apache.jmeter.save.SaveService;
|
||||
import org.apache.jmeter.testelement.TestElement;
|
||||
import org.apache.jorphan.collections.HashTree;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* @Author: jianxing
|
||||
|
@ -27,5 +40,32 @@ public class ExtractPostProcessorConverter extends MsProcessorConverter<ExtractP
|
|||
ExtractConverterFactory.getConverter(extract.getClass())
|
||||
.parse(hashTree, extract, config);
|
||||
});
|
||||
|
||||
//提取参数应用到环境变量
|
||||
List<MsExtract> list = processor.getExtractors().stream()
|
||||
.filter(extract -> StringUtils.equals(extract.getVariableType(), MsExtract.MsExtractType.ENVIRONMENT.name())
|
||||
&& extract.isValid() && extract.getEnable()).toList();
|
||||
if (CollectionUtils.isNotEmpty(list)) {
|
||||
//需要生成一个后置脚本
|
||||
ApiParamConfig apiParamConfig = (ApiParamConfig) config;
|
||||
EnvironmentInfoDTO envConfig = apiParamConfig.getEnvConfig(processor.getProjectId());
|
||||
String envId = envConfig.getId();
|
||||
JSR223PostProcessor jsr223PostProcessor = new JSR223PostProcessor();
|
||||
jsr223PostProcessor.setName("Set Environment Variable");
|
||||
jsr223PostProcessor.setProperty(TestElement.TEST_CLASS, jsr223PostProcessor.getClass().getSimpleName());
|
||||
jsr223PostProcessor.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass(JmeterAlias.TEST_BEAN_GUI));
|
||||
jsr223PostProcessor.setProperty(ElementProperty.PROJECT_ID.name(), processor.getProjectId());
|
||||
jsr223PostProcessor.setProperty(JmeterProperty.SCRIPT_LANGUAGE, ScriptLanguageType.BEANSHELL.name().toLowerCase());
|
||||
StringBuilder scriptBuilder = new StringBuilder();
|
||||
list.forEach(extract -> {
|
||||
String script = """
|
||||
vars.put("MS.ENV.%s.%s","${%s}");
|
||||
vars.put("%s","${%s}");
|
||||
""";
|
||||
scriptBuilder.append(String.format(script, envId, extract.getVariableName(), extract.getVariableName(), extract.getVariableName(), extract.getVariableName()));
|
||||
});
|
||||
jsr223PostProcessor.setProperty(JmeterProperty.SCRIPT, scriptBuilder.toString());
|
||||
hashTree.add(jsr223PostProcessor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue