feat(接口自动化): 循环控制器 结果处理

This commit is contained in:
fit2-zhao 2021-01-22 20:14:15 +08:00
parent 66473ae258
commit d6c5d56d55
7 changed files with 57 additions and 8 deletions

View File

@ -60,7 +60,7 @@ public class MsScenario extends MsTestElement {
return;
}
config.setStep(this.name);
config.setStepType("");
config.setStepType("SCENARIO");
config.setEnableCookieShare(enableCookieShare);
if (StringUtils.isNotEmpty(environmentId)) {
ApiTestEnvironmentService environmentService = CommonBeanFactory.getBean(ApiTestEnvironmentService.class);

View File

@ -12,7 +12,11 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.jmeter.control.*;
import org.apache.jmeter.control.ForeachController;
import org.apache.jmeter.control.LoopController;
import org.apache.jmeter.control.RunTime;
import org.apache.jmeter.control.WhileController;
import org.apache.jmeter.modifiers.CounterConfig;
import org.apache.jmeter.reporters.ResultAction;
import org.apache.jmeter.save.SaveService;
import org.apache.jmeter.testelement.TestElement;
@ -43,8 +47,21 @@ public class MsLoopController extends MsTestElement {
if (!this.isEnable()) {
return;
}
final HashTree groupTree = controller(tree);
if (StringUtils.equals(this.loopType, LoopConstants.WHILE.name()) && this.whileController != null) {
config.setStep("While 循环");
}
if (StringUtils.equals(this.loopType, LoopConstants.FOREACH.name()) && this.forEachController != null) {
config.setStep("ForEach 循环");
}
if (StringUtils.equals(this.loopType, LoopConstants.LOOP_COUNT.name()) && this.countController != null) {
config.setStep("次数循环");
}
config.setStepType("LOOP");
final HashTree groupTree = controller(tree);
// 循环下都增加一个计数器用于结果统计
groupTree.add(addCounterConfig());
// 不打开执行成功后轮询功能则成功后就停止循环
if (StringUtils.equals(this.loopType, LoopConstants.LOOP_COUNT.name()) && this.countController != null && !countController.isProceed()) {
ResultAction resultAction = new ResultAction();
@ -65,6 +82,18 @@ public class MsLoopController extends MsTestElement {
}
}
private CounterConfig addCounterConfig() {
CounterConfig counterConfig = new CounterConfig();
counterConfig.setVarName("LoopCounterConfigXXX");
counterConfig.setName("LoopCounterConfigXXX");
counterConfig.setEnabled(true);
counterConfig.setProperty(TestElement.TEST_CLASS, CounterConfig.class.getName());
counterConfig.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("CounterConfigGui"));
counterConfig.setStart(1L);
counterConfig.setIncrement(1L);
return counterConfig;
}
private LoopController loopController() {
LoopController loopController = new LoopController();
loopController.setEnabled(true);

View File

@ -40,7 +40,11 @@ public class MsJSR223Processor extends MsTestElement {
processor.setName("JSR223Processor");
}
if (config != null && StringUtils.isNotEmpty(config.getStep())) {
if ("SCENARIO".equals(config.getStepType())) {
processor.setName(this.getName() + "<->" + config.getStep());
} else {
processor.setName(this.getName() + "<->" + config.getStep() + "-" + "${LoopCounterConfigXXX}");
}
}
processor.setProperty(TestElement.TEST_CLASS, JSR223Sampler.class.getName());
processor.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("TestBeanGUI"));

View File

@ -78,7 +78,11 @@ public class MsDubboSampler extends MsTestElement {
DubboSample sampler = new DubboSample();
sampler.setName(this.getName());
if (config != null && StringUtils.isNotEmpty(config.getStep())) {
if ("SCENARIO".equals(config.getStepType())) {
sampler.setName(this.getName() + "<->" + config.getStep());
} else {
sampler.setName(this.getName() + "<->" + config.getStep() + "-" + "${LoopCounterConfigXXX}");
}
}
sampler.setProperty(TestElement.TEST_CLASS, DubboSample.class.getName());
sampler.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("DubboSampleGui"));

View File

@ -97,7 +97,11 @@ public class MsHTTPSamplerProxy extends MsTestElement {
sampler.setEnabled(true);
sampler.setName(this.getName());
if (config != null && StringUtils.isNotEmpty(config.getStep())) {
if ("SCENARIO".equals(config.getStepType())) {
sampler.setName(this.getName() + "<->" + config.getStep());
} else {
sampler.setName(this.getName() + "<->" + config.getStep() + "-" + "${LoopCounterConfigXXX}");
}
}
sampler.setProperty(TestElement.TEST_CLASS, HTTPSamplerProxy.class.getName());

View File

@ -107,7 +107,11 @@ public class MsJDBCSampler extends MsTestElement {
JDBCSampler sampler = new JDBCSampler();
sampler.setName(this.getName());
if (config != null && StringUtils.isNotEmpty(config.getStep())) {
if ("SCENARIO".equals(config.getStepType())) {
sampler.setName(this.getName() + "<->" + config.getStep());
} else {
sampler.setName(this.getName() + "<->" + config.getStep() + "-" + "${LoopCounterConfigXXX}");
}
}
sampler.setProperty(TestElement.TEST_CLASS, JDBCSampler.class.getName());
sampler.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("TestBeanGUI"));

View File

@ -99,7 +99,11 @@ public class MsTCPSampler extends MsTestElement {
TCPSampler tcpSampler = new TCPSampler();
tcpSampler.setName(this.getName());
if (config != null && StringUtils.isNotEmpty(config.getStep())) {
if ("SCENARIO".equals(config.getStepType())) {
tcpSampler.setName(this.getName() + "<->" + config.getStep());
} else {
tcpSampler.setName(this.getName() + "<->" + config.getStep() + "-" + "${LoopCounterConfigXXX}");
}
}
tcpSampler.setProperty(TestElement.TEST_CLASS, TCPSampler.class.getName());