fix(接口测试): 修复导入JMeter脚本文件
--bug=1015184 --user=赵勇 【接口测试】github#16100,.jmx里含content-type为multipart/form-data的请求时,导到平台请求体不是form-data https://www.tapd.cn/55049933/s/1207309
This commit is contained in:
parent
e12241bb45
commit
77a24d38bc
|
@ -48,6 +48,7 @@ import io.metersphere.commons.utils.CommonBeanFactory;
|
||||||
import io.metersphere.commons.utils.LogUtil;
|
import io.metersphere.commons.utils.LogUtil;
|
||||||
import io.metersphere.plugin.core.MsTestElement;
|
import io.metersphere.plugin.core.MsTestElement;
|
||||||
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
|
import org.apache.commons.collections.MapUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.jmeter.assertions.*;
|
import org.apache.jmeter.assertions.*;
|
||||||
import org.apache.jmeter.config.ConfigTestElement;
|
import org.apache.jmeter.config.ConfigTestElement;
|
||||||
|
@ -114,29 +115,12 @@ public class MsJmeterParser extends ApiImportAbstractParser<ScenarioImport> {
|
||||||
private List<ApiScenarioWithBLOBs> parseObj(MsScenario msScenario, ApiTestImportRequest request) {
|
private List<ApiScenarioWithBLOBs> parseObj(MsScenario msScenario, ApiTestImportRequest request) {
|
||||||
List<ApiScenarioWithBLOBs> scenarioWithBLOBsList = new ArrayList<>();
|
List<ApiScenarioWithBLOBs> scenarioWithBLOBsList = new ArrayList<>();
|
||||||
ApiScenarioWithBLOBs scenarioWithBLOBs = new ApiScenarioWithBLOBs();
|
ApiScenarioWithBLOBs scenarioWithBLOBs = new ApiScenarioWithBLOBs();
|
||||||
/* ApiScenarioModule selectModule = null;
|
|
||||||
String selectModulePath = null;
|
|
||||||
if (StringUtils.isNotBlank(request.getModuleId())) {
|
|
||||||
selectModule = ApiScenarioImportUtil.getSelectModule(request.getModuleId());
|
|
||||||
if (selectModule != null) {
|
|
||||||
selectModulePath = ApiScenarioImportUtil.getSelectModulePath(selectModule.getName(), selectModule.getParentId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ApiScenarioModule module = ApiScenarioImportUtil.buildModule(selectModule, msScenario.getName(), this.projectId);*/
|
|
||||||
scenarioWithBLOBs.setName(request.getFileName());
|
scenarioWithBLOBs.setName(request.getFileName());
|
||||||
scenarioWithBLOBs.setProjectId(request.getProjectId());
|
scenarioWithBLOBs.setProjectId(request.getProjectId());
|
||||||
if (msScenario != null && CollectionUtils.isNotEmpty(msScenario.getHashTree())) {
|
if (msScenario != null && CollectionUtils.isNotEmpty(msScenario.getHashTree())) {
|
||||||
scenarioWithBLOBs.setStepTotal(msScenario.getHashTree().size());
|
scenarioWithBLOBs.setStepTotal(msScenario.getHashTree().size());
|
||||||
scenarioWithBLOBs.setModulePath("/" + msScenario.getName());
|
scenarioWithBLOBs.setModulePath("/" + msScenario.getName());
|
||||||
}
|
}
|
||||||
/*if (module != null) {
|
|
||||||
scenarioWithBLOBs.setApiScenarioModuleId(module.getId());
|
|
||||||
if (StringUtils.isNotBlank(selectModulePath)) {
|
|
||||||
scenarioWithBLOBs.setModulePath(selectModulePath + "/" + module.getName());
|
|
||||||
} else {
|
|
||||||
scenarioWithBLOBs.setModulePath("/" + module.getName());
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
scenarioWithBLOBs.setId(UUID.randomUUID().toString());
|
scenarioWithBLOBs.setId(UUID.randomUUID().toString());
|
||||||
scenarioWithBLOBs.setScenarioDefinition(JSON.toJSONString(msScenario));
|
scenarioWithBLOBs.setScenarioDefinition(JSON.toJSONString(msScenario));
|
||||||
scenarioWithBLOBsList.add(scenarioWithBLOBs);
|
scenarioWithBLOBsList.add(scenarioWithBLOBs);
|
||||||
|
@ -305,7 +289,15 @@ public class MsJmeterParser extends ApiImportAbstractParser<ScenarioImport> {
|
||||||
samplerProxy.getBody().setRaw(v);
|
samplerProxy.getBody().setRaw(v);
|
||||||
});
|
});
|
||||||
samplerProxy.getBody().initKvs();
|
samplerProxy.getBody().initKvs();
|
||||||
} else if (StringUtils.isNotEmpty(bodyType) || (source.getMethod().equalsIgnoreCase("POST") && source.getArguments().getArgumentsAsMap().size() > 0)) {
|
} else if (source.getDoMultipart()) {
|
||||||
|
samplerProxy.getBody().setType(Body.FORM_DATA);
|
||||||
|
source.getArguments().getArgumentsAsMap().forEach((k, v) -> {
|
||||||
|
KeyValue keyValue = new KeyValue(k, v);
|
||||||
|
samplerProxy.getBody().getKvs().add(keyValue);
|
||||||
|
});
|
||||||
|
} else if (StringUtils.isNotEmpty(bodyType) ||
|
||||||
|
(source.getMethod().equalsIgnoreCase("POST") &&
|
||||||
|
MapUtils.isNotEmpty(source.getArguments().getArgumentsAsMap()))) {
|
||||||
samplerProxy.getBody().setType(Body.WWW_FROM);
|
samplerProxy.getBody().setType(Body.WWW_FROM);
|
||||||
source.getArguments().getArgumentsAsMap().forEach((k, v) -> {
|
source.getArguments().getArgumentsAsMap().forEach((k, v) -> {
|
||||||
KeyValue keyValue = new KeyValue(k, v);
|
KeyValue keyValue = new KeyValue(k, v);
|
||||||
|
@ -779,12 +771,6 @@ public class MsJmeterParser extends ApiImportAbstractParser<ScenarioImport> {
|
||||||
BeanUtils.copyBean(elementNode, key);
|
BeanUtils.copyBean(elementNode, key);
|
||||||
elementNode.setType("ConstantTimer");
|
elementNode.setType("ConstantTimer");
|
||||||
}
|
}
|
||||||
// IF条件控制器,这里平台方式和jmeter 不同,暂时不处理
|
|
||||||
// else if (key instanceof IfController) {
|
|
||||||
// elementNode = new MsIfController();
|
|
||||||
// BeanUtils.copyBean(elementNode, key);
|
|
||||||
// elementNode.setType("IfController");
|
|
||||||
// }
|
|
||||||
// 次数循环控制器
|
// 次数循环控制器
|
||||||
else if (key instanceof LoopController) {
|
else if (key instanceof LoopController) {
|
||||||
elementNode = new MsLoopController();
|
elementNode = new MsLoopController();
|
||||||
|
|
Loading…
Reference in New Issue