fix(接口测试): 修复导入原生jmx文件beanshell处理和平台不一致问题

--bug=1020951 --user=赵勇 【接口测试】接口场景中导入带BeanShell自定义脚本的jmx文件,beanshell自定义脚本建议和系统中原有的自定义脚本一样 https://www.tapd.cn/55049933/s/1316722
This commit is contained in:
fit2-zhao 2022-12-19 10:13:41 +08:00 committed by fit2-zhao
parent 448cb0e081
commit 5b897859ff
14 changed files with 48 additions and 36 deletions

View File

@ -904,7 +904,7 @@ public class ElementUtil {
testElement.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("BeanShellSamplerGui")); testElement.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("BeanShellSamplerGui"));
} else { } else {
testElement.setProperty("scriptLanguage", vo.getScriptLanguage()); testElement.setProperty("scriptLanguage", vo.getScriptLanguage());
testElement.setProperty("script", vo.getScript()); testElement.setProperty(ElementConstants.SCRIPT, vo.getScript());
} }
} }

View File

@ -222,7 +222,7 @@ public class MsAssertions extends MsTestElement {
scriptLanguage = "rhino"; scriptLanguage = "rhino";
} }
assertion.setProperty("scriptLanguage", scriptLanguage); assertion.setProperty("scriptLanguage", scriptLanguage);
assertion.setProperty("script", assertionJSR223.getScript()); assertion.setProperty(ElementConstants.SCRIPT, assertionJSR223.getScript());
return assertion; return assertion;
} }

View File

@ -205,9 +205,9 @@ public class MsLoopController extends MsTestElement {
sampler.setName("MS_CLEAR_LOOPS_VAR_" + ms_current_timer); sampler.setName("MS_CLEAR_LOOPS_VAR_" + ms_current_timer);
sampler.setProperty(TestElement.TEST_CLASS, JSR223Sampler.class.getName()); sampler.setProperty(TestElement.TEST_CLASS, JSR223Sampler.class.getName());
sampler.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("TestBeanGUI")); sampler.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("TestBeanGUI"));
sampler.setProperty("scriptLanguage", "beanshell"); sampler.setProperty("scriptLanguage", ElementConstants.BEANSHELL);
ScriptFilter.verify("beanshell", this.getName(), script()); ScriptFilter.verify(ElementConstants.BEANSHELL, this.getName(), script());
sampler.setProperty("script", "vars.put(\"" + ms_current_timer + "\", null);"); sampler.setProperty(ElementConstants.SCRIPT, "vars.put(\"" + ms_current_timer + "\", null);");
hashTree.add(sampler); hashTree.add(sampler);
} }
@ -235,11 +235,11 @@ public class MsLoopController extends MsTestElement {
jsr223PreProcessor.setName("循环超时处理"); jsr223PreProcessor.setName("循环超时处理");
jsr223PreProcessor.setProperty(TestElement.TEST_CLASS, JSR223Sampler.class.getName()); jsr223PreProcessor.setProperty(TestElement.TEST_CLASS, JSR223Sampler.class.getName());
jsr223PreProcessor.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("TestBeanGUI")); jsr223PreProcessor.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("TestBeanGUI"));
jsr223PreProcessor.setProperty("scriptLanguage", "beanshell"); jsr223PreProcessor.setProperty("scriptLanguage", ElementConstants.BEANSHELL);
ScriptFilter.verify("beanshell", this.getName(), script()); ScriptFilter.verify(ElementConstants.BEANSHELL, this.getName(), script());
jsr223PreProcessor.setProperty("script", script()); jsr223PreProcessor.setProperty(ElementConstants.SCRIPT, script());
hashTree.add(jsr223PreProcessor); hashTree.add(jsr223PreProcessor);
return hashTree; return hashTree;
} }

View File

@ -74,7 +74,7 @@ public class MsExtract extends MsTestElement {
shell.setProperty(TestElement.TEST_CLASS, JSR223PostProcessor.class.getName()); shell.setProperty(TestElement.TEST_CLASS, JSR223PostProcessor.class.getName());
shell.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("TestBeanGUI")); shell.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("TestBeanGUI"));
shell.setProperty("cacheKey", false); shell.setProperty("cacheKey", false);
shell.setProperty("script", "io.metersphere.utils.JMeterVars.addVars(prev.getResourceId(),vars," + "\"" + extract.toString() + "\"" + ");"); shell.setProperty(ElementConstants.SCRIPT, "io.metersphere.utils.JMeterVars.addVars(prev.getResourceId(),vars," + "\"" + extract.toString() + "\"" + ");");
samplerHashTree.add(shell); samplerHashTree.add(shell);
} }
} }

View File

@ -1,5 +1,6 @@
package io.metersphere.api.dto.shell.filter; package io.metersphere.api.dto.shell.filter;
import io.metersphere.commons.constants.ElementConstants;
import io.metersphere.commons.exception.MSException; import io.metersphere.commons.exception.MSException;
import io.metersphere.plugin.core.utils.LogUtil; import io.metersphere.plugin.core.utils.LogUtil;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
@ -34,7 +35,7 @@ public class ScriptFilter {
if (StringUtils.isNotEmpty(script)) { if (StringUtils.isNotEmpty(script)) {
final StringBuffer buffer = new StringBuffer(); final StringBuffer buffer = new StringBuffer();
switch (language) { switch (language) {
case "beanshell": case ElementConstants.BEANSHELL:
blackList(buffer, script, beanshell); blackList(buffer, script, beanshell);
break; break;
case "python": case "python":

View File

@ -29,11 +29,12 @@ import io.metersphere.api.dto.scenario.DatabaseConfig;
import io.metersphere.api.dto.scenario.KeyValue; import io.metersphere.api.dto.scenario.KeyValue;
import io.metersphere.api.dto.scenario.environment.EnvironmentConfig; import io.metersphere.api.dto.scenario.environment.EnvironmentConfig;
import io.metersphere.api.parse.ApiImportAbstractParser; import io.metersphere.api.parse.ApiImportAbstractParser;
import io.metersphere.api.parse.scenario.MsJmeterParser; import io.metersphere.api.parse.scenario.JMeterParser;
import io.metersphere.base.domain.ApiDefinitionWithBLOBs; import io.metersphere.base.domain.ApiDefinitionWithBLOBs;
import io.metersphere.base.domain.ApiTestCaseWithBLOBs; import io.metersphere.base.domain.ApiTestCaseWithBLOBs;
import io.metersphere.base.domain.ApiTestEnvironmentExample; import io.metersphere.base.domain.ApiTestEnvironmentExample;
import io.metersphere.base.domain.ApiTestEnvironmentWithBLOBs; import io.metersphere.base.domain.ApiTestEnvironmentWithBLOBs;
import io.metersphere.commons.constants.ElementConstants;
import io.metersphere.commons.constants.PropertyConstant; import io.metersphere.commons.constants.PropertyConstant;
import io.metersphere.commons.constants.RequestTypeConstants; import io.metersphere.commons.constants.RequestTypeConstants;
import io.metersphere.commons.enums.ApiTestDataStatus; import io.metersphere.commons.enums.ApiTestDataStatus;
@ -346,7 +347,7 @@ public class JmeterDefinitionParser extends ApiImportAbstractParser<ApiDefinitio
if (key instanceof TestPlan) { if (key instanceof TestPlan) {
this.planName = ((TestPlan) key).getName(); this.planName = ((TestPlan) key).getName();
elementNode = new MsJmeterElement(); elementNode = new MsJmeterElement();
((MsJmeterElement) elementNode).setJmeterElement(MsJmeterParser.objToXml(key)); ((MsJmeterElement) elementNode).setJmeterElement(JMeterParser.objToXml(key));
((MsJmeterElement) elementNode).setElementType(key.getClass().getSimpleName()); ((MsJmeterElement) elementNode).setElementType(key.getClass().getSimpleName());
} }
// 线程组 // 线程组
@ -382,7 +383,7 @@ public class JmeterDefinitionParser extends ApiImportAbstractParser<ApiDefinitio
JSR223PostProcessor jsr223Sampler = (JSR223PostProcessor) key; JSR223PostProcessor jsr223Sampler = (JSR223PostProcessor) key;
elementNode = new MsJSR223PostProcessor(); elementNode = new MsJSR223PostProcessor();
BeanUtils.copyBean(elementNode, jsr223Sampler); BeanUtils.copyBean(elementNode, jsr223Sampler);
((MsJSR223PostProcessor) elementNode).setScript(jsr223Sampler.getPropertyAsString("script")); ((MsJSR223PostProcessor) elementNode).setScript(jsr223Sampler.getPropertyAsString(ElementConstants.SCRIPT));
((MsJSR223PostProcessor) elementNode).setScriptLanguage(jsr223Sampler.getPropertyAsString("scriptLanguage")); ((MsJSR223PostProcessor) elementNode).setScriptLanguage(jsr223Sampler.getPropertyAsString("scriptLanguage"));
} }
// 前置脚本 // 前置脚本
@ -390,12 +391,12 @@ public class JmeterDefinitionParser extends ApiImportAbstractParser<ApiDefinitio
JSR223PreProcessor jsr223Sampler = (JSR223PreProcessor) key; JSR223PreProcessor jsr223Sampler = (JSR223PreProcessor) key;
elementNode = new MsJSR223PreProcessor(); elementNode = new MsJSR223PreProcessor();
BeanUtils.copyBean(elementNode, jsr223Sampler); BeanUtils.copyBean(elementNode, jsr223Sampler);
((MsJSR223PreProcessor) elementNode).setScript(jsr223Sampler.getPropertyAsString("script")); ((MsJSR223PreProcessor) elementNode).setScript(jsr223Sampler.getPropertyAsString(ElementConstants.SCRIPT));
((MsJSR223PreProcessor) elementNode).setScriptLanguage(jsr223Sampler.getPropertyAsString("scriptLanguage")); ((MsJSR223PreProcessor) elementNode).setScriptLanguage(jsr223Sampler.getPropertyAsString("scriptLanguage"));
} else if (key instanceof BeanShellPostProcessor) { } else if (key instanceof BeanShellPostProcessor) {
elementNode = MsJmeterParser.getMsTestElement((BeanShellPostProcessor) key); elementNode = JMeterParser.getMsTestElement((BeanShellPostProcessor) key);
} else if (key instanceof BeanShellPreProcessor) { } else if (key instanceof BeanShellPreProcessor) {
elementNode = MsJmeterParser.getMsTestElement((BeanShellPreProcessor) key); elementNode = JMeterParser.getMsTestElement((BeanShellPreProcessor) key);
} }
// 断言规则 // 断言规则
else if (key instanceof ResponseAssertion || key instanceof JSONPathAssertion || key instanceof XPath2Assertion || key instanceof JSR223Assertion || key instanceof DurationAssertion) { else if (key instanceof ResponseAssertion || key instanceof JSONPathAssertion || key instanceof XPath2Assertion || key instanceof JSR223Assertion || key instanceof DurationAssertion) {
@ -498,7 +499,7 @@ public class JmeterDefinitionParser extends ApiImportAbstractParser<ApiDefinitio
JSR223Assertion jsr223Assertion = (JSR223Assertion) key; JSR223Assertion jsr223Assertion = (JSR223Assertion) key;
msAssertionJSR223.setName(jsr223Assertion.getName()); msAssertionJSR223.setName(jsr223Assertion.getName());
msAssertionJSR223.setDesc(jsr223Assertion.getName()); msAssertionJSR223.setDesc(jsr223Assertion.getName());
msAssertionJSR223.setScript(jsr223Assertion.getPropertyAsString("script")); msAssertionJSR223.setScript(jsr223Assertion.getPropertyAsString(ElementConstants.SCRIPT));
msAssertionJSR223.setScriptLanguage(jsr223Assertion.getPropertyAsString("scriptLanguage")); msAssertionJSR223.setScriptLanguage(jsr223Assertion.getPropertyAsString("scriptLanguage"));
assertions.setName(jsr223Assertion.getName()); assertions.setName(jsr223Assertion.getName());

View File

@ -85,7 +85,7 @@ import java.net.URL;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class MsJmeterParser extends ApiImportAbstractParser<ScenarioImport> { public class JMeterParser extends ApiImportAbstractParser<ScenarioImport> {
private final String ENV_NAME = "导入数据环境"; private final String ENV_NAME = "导入数据环境";
/** /**
* todo 存放单个请求下的Header 为了和平台对应 * todo 存放单个请求下的Header 为了和平台对应
@ -103,7 +103,7 @@ public class MsJmeterParser extends ApiImportAbstractParser<ScenarioImport> {
MsScenario scenario = new MsScenario(); MsScenario scenario = new MsScenario();
scenario.setReferenced("IMPORT"); scenario.setReferenced("IMPORT");
jmterHashTree(testPlan, scenario); formatHashTree(testPlan, scenario);
this.projectId = request.getProjectId(); this.projectId = request.getProjectId();
ScenarioImport scenarioImport = new ScenarioImport(); ScenarioImport scenarioImport = new ScenarioImport();
scenarioImport.setData(parseObj(scenario, request)); scenarioImport.setData(parseObj(scenario, request));
@ -656,7 +656,7 @@ public class MsJmeterParser extends ApiImportAbstractParser<ScenarioImport> {
JSR223Assertion jsr223Assertion = (JSR223Assertion) key; JSR223Assertion jsr223Assertion = (JSR223Assertion) key;
msAssertionJSR223.setName(jsr223Assertion.getName()); msAssertionJSR223.setName(jsr223Assertion.getName());
msAssertionJSR223.setDesc(jsr223Assertion.getName()); msAssertionJSR223.setDesc(jsr223Assertion.getName());
msAssertionJSR223.setScript(jsr223Assertion.getPropertyAsString("script")); msAssertionJSR223.setScript(jsr223Assertion.getPropertyAsString(ElementConstants.SCRIPT));
msAssertionJSR223.setScriptLanguage(jsr223Assertion.getPropertyAsString("scriptLanguage")); msAssertionJSR223.setScriptLanguage(jsr223Assertion.getPropertyAsString("scriptLanguage"));
assertions.setName(jsr223Assertion.getName()); assertions.setName(jsr223Assertion.getName());
@ -687,7 +687,7 @@ public class MsJmeterParser extends ApiImportAbstractParser<ScenarioImport> {
return null; return null;
} }
private void jmterHashTree(HashTree tree, MsTestElement scenario) { private void formatHashTree(HashTree tree, MsTestElement scenario) {
for (Object key : tree.keySet()) { for (Object key : tree.keySet()) {
MsTestElement elementNode; MsTestElement elementNode;
if (CollectionUtils.isEmpty(scenario.getHashTree())) { if (CollectionUtils.isEmpty(scenario.getHashTree())) {
@ -734,7 +734,7 @@ public class MsJmeterParser extends ApiImportAbstractParser<ScenarioImport> {
JSR223Sampler jsr223Sampler = (JSR223Sampler) key; JSR223Sampler jsr223Sampler = (JSR223Sampler) key;
elementNode = new MsJSR223Processor(); elementNode = new MsJSR223Processor();
BeanUtils.copyBean(elementNode, jsr223Sampler); BeanUtils.copyBean(elementNode, jsr223Sampler);
((MsJSR223Processor) elementNode).setScript(jsr223Sampler.getPropertyAsString("script")); ((MsJSR223Processor) elementNode).setScript(jsr223Sampler.getPropertyAsString(ElementConstants.SCRIPT));
((MsJSR223Processor) elementNode).setScriptLanguage(jsr223Sampler.getPropertyAsString("scriptLanguage")); ((MsJSR223Processor) elementNode).setScriptLanguage(jsr223Sampler.getPropertyAsString("scriptLanguage"));
} }
// 后置脚本 // 后置脚本
@ -742,7 +742,7 @@ public class MsJmeterParser extends ApiImportAbstractParser<ScenarioImport> {
JSR223PostProcessor jsr223Sampler = (JSR223PostProcessor) key; JSR223PostProcessor jsr223Sampler = (JSR223PostProcessor) key;
elementNode = new MsJSR223PostProcessor(); elementNode = new MsJSR223PostProcessor();
BeanUtils.copyBean(elementNode, jsr223Sampler); BeanUtils.copyBean(elementNode, jsr223Sampler);
((MsJSR223PostProcessor) elementNode).setScript(jsr223Sampler.getPropertyAsString("script")); ((MsJSR223PostProcessor) elementNode).setScript(jsr223Sampler.getPropertyAsString(ElementConstants.SCRIPT));
((MsJSR223PostProcessor) elementNode).setScriptLanguage(jsr223Sampler.getPropertyAsString("scriptLanguage")); ((MsJSR223PostProcessor) elementNode).setScriptLanguage(jsr223Sampler.getPropertyAsString("scriptLanguage"));
} else if (key instanceof BeanShellPostProcessor) { } else if (key instanceof BeanShellPostProcessor) {
elementNode = getMsTestElement((BeanShellPostProcessor) key); elementNode = getMsTestElement((BeanShellPostProcessor) key);
@ -754,7 +754,7 @@ public class MsJmeterParser extends ApiImportAbstractParser<ScenarioImport> {
JSR223PreProcessor jsr223Sampler = (JSR223PreProcessor) key; JSR223PreProcessor jsr223Sampler = (JSR223PreProcessor) key;
elementNode = new MsJSR223PreProcessor(); elementNode = new MsJSR223PreProcessor();
BeanUtils.copyBean(elementNode, jsr223Sampler); BeanUtils.copyBean(elementNode, jsr223Sampler);
((MsJSR223PreProcessor) elementNode).setScript(jsr223Sampler.getPropertyAsString("script")); ((MsJSR223PreProcessor) elementNode).setScript(jsr223Sampler.getPropertyAsString(ElementConstants.SCRIPT));
((MsJSR223PreProcessor) elementNode).setScriptLanguage(jsr223Sampler.getPropertyAsString("scriptLanguage")); ((MsJSR223PreProcessor) elementNode).setScriptLanguage(jsr223Sampler.getPropertyAsString("scriptLanguage"));
} }
// 断言规则 // 断言规则
@ -851,7 +851,7 @@ public class MsJmeterParser extends ApiImportAbstractParser<ScenarioImport> {
// 递归子项 // 递归子项
HashTree node = tree.get(key); HashTree node = tree.get(key);
if (node != null) { if (node != null) {
jmterHashTree(node, elementNode); formatHashTree(node, elementNode);
} }
} }
} }
@ -862,8 +862,8 @@ public class MsJmeterParser extends ApiImportAbstractParser<ScenarioImport> {
elementNode = new MsJSR223PreProcessor(); elementNode = new MsJSR223PreProcessor();
BeanUtils.copyBean(elementNode, beanShellPreProcessor); BeanUtils.copyBean(elementNode, beanShellPreProcessor);
((MsJSR223PreProcessor) elementNode).setJsrEnable(false); ((MsJSR223PreProcessor) elementNode).setJsrEnable(false);
((MsJSR223PreProcessor) elementNode).setScript(beanShellPreProcessor.getPropertyAsString("script")); ((MsJSR223PreProcessor) elementNode).setScript(beanShellPreProcessor.getPropertyAsString(ElementConstants.SCRIPT));
((MsJSR223PreProcessor) elementNode).setScriptLanguage(beanShellPreProcessor.getPropertyAsString("scriptLanguage")); ((MsJSR223PreProcessor) elementNode).setScriptLanguage(ElementConstants.BEANSHELL);
return elementNode; return elementNode;
} }
@ -873,8 +873,8 @@ public class MsJmeterParser extends ApiImportAbstractParser<ScenarioImport> {
elementNode = new MsJSR223PostProcessor(); elementNode = new MsJSR223PostProcessor();
((MsJSR223PostProcessor) elementNode).setJsrEnable(false); ((MsJSR223PostProcessor) elementNode).setJsrEnable(false);
BeanUtils.copyBean(elementNode, beanShellPostProcessor); BeanUtils.copyBean(elementNode, beanShellPostProcessor);
((MsJSR223PostProcessor) elementNode).setScript(beanShellPostProcessor.getPropertyAsString("script")); ((MsJSR223PostProcessor) elementNode).setScript(beanShellPostProcessor.getPropertyAsString(ElementConstants.SCRIPT));
((MsJSR223PostProcessor) elementNode).setScriptLanguage(beanShellPostProcessor.getPropertyAsString("scriptLanguage")); ((MsJSR223PostProcessor) elementNode).setScriptLanguage(ElementConstants.BEANSHELL);
return elementNode; return elementNode;
} }
} }

View File

@ -11,7 +11,7 @@ public class ScenarioImportParserFactory {
} else if (StringUtils.equals(ApiImportPlatform.Postman.name(), platform)) { } else if (StringUtils.equals(ApiImportPlatform.Postman.name(), platform)) {
return new PostmanScenarioParser(); return new PostmanScenarioParser();
} else if (StringUtils.equals(ApiImportPlatform.Jmeter.name(), platform)) { } else if (StringUtils.equals(ApiImportPlatform.Jmeter.name(), platform)) {
return new MsJmeterParser(); return new JMeterParser();
} else if (StringUtils.equals(ApiImportPlatform.Har.name(), platform)) { } else if (StringUtils.equals(ApiImportPlatform.Har.name(), platform)) {
return new HarScenarioParser(); return new HarScenarioParser();
} }

View File

@ -49,4 +49,8 @@ public class ElementConstants {
this.add(ElementConstants.AUTH_MANAGER); this.add(ElementConstants.AUTH_MANAGER);
this.add(ElementConstants.ABS_SAMPLER); this.add(ElementConstants.ABS_SAMPLER);
}}; }};
public static final String SCRIPT = "script";
public static final String BEANSHELL = "beanshell";
} }

View File

@ -37,7 +37,7 @@ public class ApiTestDefinitionDiffUtilImpl implements ApiDefinitionDiffUtil {
public static final String BODY_RAW = "body_raw"; public static final String BODY_RAW = "body_raw";
public static final String REQUEST = "request"; public static final String REQUEST = "request";
public static final String BODY_XML = "body_xml"; public static final String BODY_XML = "body_xml";
public static final String SCRIPT = "script"; public static final String SCRIPT = ElementConstants.SCRIPT;
@Override @Override
public String diffResponse(String newValue, String oldValue) { public String diffResponse(String newValue, String oldValue) {

View File

@ -7,6 +7,7 @@ import io.metersphere.api.dto.definition.request.assertions.MsAssertionRegex;
import io.metersphere.api.dto.definition.request.assertions.MsAssertions; import io.metersphere.api.dto.definition.request.assertions.MsAssertions;
import io.metersphere.api.dto.scenario.environment.EnvironmentConfig; import io.metersphere.api.dto.scenario.environment.EnvironmentConfig;
import io.metersphere.base.domain.ApiTestEnvironmentWithBLOBs; import io.metersphere.base.domain.ApiTestEnvironmentWithBLOBs;
import io.metersphere.commons.constants.ElementConstants;
import io.metersphere.commons.constants.StorageConstants; import io.metersphere.commons.constants.StorageConstants;
import io.metersphere.dto.FileInfoDTO; import io.metersphere.dto.FileInfoDTO;
import io.metersphere.dto.JmeterRunRequestDTO; import io.metersphere.dto.JmeterRunRequestDTO;
@ -36,7 +37,7 @@ public class HashTreeUtil {
public static final String VALUE = "value"; public static final String VALUE = "value";
public static final String ENABLE = "enable"; public static final String ENABLE = "enable";
public static final String NAME = "name"; public static final String NAME = "name";
public static final String SCRIPT = "script"; public static final String SCRIPT = ElementConstants.SCRIPT;
public Map<String, Map<String, String>> getEnvParamsDataByHashTree(HashTree hashTree, BaseEnvironmentService apiTestEnvironmentService) { public Map<String, Map<String, String>> getEnvParamsDataByHashTree(HashTree hashTree, BaseEnvironmentService apiTestEnvironmentService) {
Map<String, Map<String, String>> returnMap = new HashMap<>(); Map<String, Map<String, String>> returnMap = new HashMap<>();

View File

@ -5,6 +5,7 @@ import io.metersphere.api.dto.mock.MockConfigRequestParams;
import io.metersphere.api.dto.mock.RequestMockParams; import io.metersphere.api.dto.mock.RequestMockParams;
import io.metersphere.api.dto.shell.filter.ScriptFilter; import io.metersphere.api.dto.shell.filter.ScriptFilter;
import io.metersphere.api.exec.generator.JSONSchemaGenerator; import io.metersphere.api.exec.generator.JSONSchemaGenerator;
import io.metersphere.commons.constants.ElementConstants;
import io.metersphere.commons.constants.PropertyConstant; import io.metersphere.commons.constants.PropertyConstant;
import io.metersphere.commons.enums.MockParamConditionEnums; import io.metersphere.commons.enums.MockParamConditionEnums;
import io.metersphere.commons.exception.MSException; import io.metersphere.commons.exception.MSException;
@ -268,14 +269,14 @@ public class MockApiUtils {
public String getResultByResponseResult(String projectId, JSONObject bodyObj, String url, Map<String, String> headerMap, RequestMockParams requestMockParams, boolean useScript) { public String getResultByResponseResult(String projectId, JSONObject bodyObj, String url, Map<String, String> headerMap, RequestMockParams requestMockParams, boolean useScript) {
MockScriptEngineUtils scriptEngineUtils = new MockScriptEngineUtils(); MockScriptEngineUtils scriptEngineUtils = new MockScriptEngineUtils();
ScriptEngine scriptEngine = null; ScriptEngine scriptEngine = null;
String scriptLanguage = "beanshell"; String scriptLanguage = ElementConstants.BEANSHELL;
String script = null; String script = null;
if (useScript) { if (useScript) {
if (bodyObj.has("scriptObject")) { if (bodyObj.has("scriptObject")) {
try { try {
JSONObject scriptObj = bodyObj.optJSONObject("scriptObject"); JSONObject scriptObj = bodyObj.optJSONObject("scriptObject");
scriptLanguage = scriptObj.optString("scriptLanguage"); scriptLanguage = scriptObj.optString("scriptLanguage");
script = scriptObj.optString("script"); script = scriptObj.optString(ElementConstants.SCRIPT);
} catch (Exception e) { } catch (Exception e) {
LogUtil.error(e); LogUtil.error(e);
} }

View File

@ -2,6 +2,7 @@ package io.metersphere.commons.utils.mock;
import io.metersphere.api.dto.mock.RequestMockParams; import io.metersphere.api.dto.mock.RequestMockParams;
import io.metersphere.commons.constants.ElementConstants;
import io.metersphere.commons.utils.CommonBeanFactory; import io.metersphere.commons.utils.CommonBeanFactory;
import io.metersphere.commons.utils.JSON; import io.metersphere.commons.utils.JSON;
import io.metersphere.commons.utils.JSONUtil; import io.metersphere.commons.utils.JSONUtil;
@ -86,9 +87,9 @@ public class MockScriptEngineUtils {
return null; return null;
} }
String preScript = StringUtils.EMPTY; String preScript = StringUtils.EMPTY;
if (StringUtils.equalsIgnoreCase(scriptLanguage, "beanshell")) { if (StringUtils.equalsIgnoreCase(scriptLanguage, ElementConstants.BEANSHELL)) {
ScriptEngineManager scriptEngineFactory = new ScriptEngineManager(); ScriptEngineManager scriptEngineFactory = new ScriptEngineManager();
engine = scriptEngineFactory.getEngineByName("beanshell"); engine = scriptEngineFactory.getEngineByName(ElementConstants.BEANSHELL);
preScript = this.genBeanshellPreScript(url, headerMap, requestMockParams); preScript = this.genBeanshellPreScript(url, headerMap, requestMockParams);
} else if (StringUtils.equalsIgnoreCase(scriptLanguage, "python")) { } else if (StringUtils.equalsIgnoreCase(scriptLanguage, "python")) {
ScriptEngineManager scriptEngineFactory = new ScriptEngineManager(); ScriptEngineManager scriptEngineFactory = new ScriptEngineManager();

View File

@ -174,6 +174,9 @@ export default {
if (this.jsr223Processor.jsrEnable === null || this.jsr223Processor.jsrEnable === undefined) { if (this.jsr223Processor.jsrEnable === null || this.jsr223Processor.jsrEnable === undefined) {
this.$set(this.jsr223Processor, 'jsrEnable', true); this.$set(this.jsr223Processor, 'jsrEnable', true);
} }
if (!this.jsr223Processor.scriptLanguage) {
this.$set(this.jsr223Processor, 'scriptLanguage', 'beanshell');
}
this.jsr223ProcessorData = this.jsr223Processor; this.jsr223ProcessorData = this.jsr223Processor;
}, },
props: { props: {