fix(接口测试): 修复场景变量隔离就近取值原则问题
--bug=1011679 --user=赵勇 【接口测试】github#11932,场景变量和自定义脚本变量重名时,变量未生效 https://www.tapd.cn/55049933/s/1127365
This commit is contained in:
parent
b4359a6e80
commit
aa0566092c
|
@ -36,6 +36,7 @@ import org.apache.jmeter.config.CSVDataSet;
|
||||||
import org.apache.jmeter.config.RandomVariableConfig;
|
import org.apache.jmeter.config.RandomVariableConfig;
|
||||||
import org.apache.jmeter.modifiers.CounterConfig;
|
import org.apache.jmeter.modifiers.CounterConfig;
|
||||||
import org.apache.jmeter.modifiers.JSR223PreProcessor;
|
import org.apache.jmeter.modifiers.JSR223PreProcessor;
|
||||||
|
import org.apache.jmeter.modifiers.UserParameters;
|
||||||
import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy;
|
import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy;
|
||||||
import org.apache.jmeter.save.SaveService;
|
import org.apache.jmeter.save.SaveService;
|
||||||
import org.apache.jmeter.testelement.AbstractTestElement;
|
import org.apache.jmeter.testelement.AbstractTestElement;
|
||||||
|
@ -592,6 +593,30 @@ public class ElementUtil {
|
||||||
return processor;
|
return processor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static UserParameters argumentsToUserParameters(Arguments arguments) {
|
||||||
|
UserParameters processor = new UserParameters();
|
||||||
|
processor.setEnabled(true);
|
||||||
|
processor.setName("User Defined Variables");
|
||||||
|
processor.setPerIteration(true);
|
||||||
|
processor.setProperty(TestElement.TEST_CLASS, UserParameters.class.getName());
|
||||||
|
processor.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("UserParametersGui"));
|
||||||
|
if (arguments != null && arguments.getArguments().size() > 0) {
|
||||||
|
List<String> names = new LinkedList<>();
|
||||||
|
List<Object> values = new LinkedList<>();
|
||||||
|
List<Object> threadValues = new LinkedList<>();
|
||||||
|
for (int i = 0; i < arguments.getArguments().size(); ++i) {
|
||||||
|
String argValue = arguments.getArgument(i).getValue();
|
||||||
|
String name = arguments.getArgument(i).getName();
|
||||||
|
names.add(name);
|
||||||
|
values.add(argValue);
|
||||||
|
}
|
||||||
|
processor.setNames(names);
|
||||||
|
threadValues.add(values);
|
||||||
|
processor.setThreadLists(threadValues);
|
||||||
|
}
|
||||||
|
return processor;
|
||||||
|
}
|
||||||
|
|
||||||
public static void setBaseParams(AbstractTestElement sampler, MsTestElement parent, ParameterConfig config, String id, String indexPath) {
|
public static void setBaseParams(AbstractTestElement sampler, MsTestElement parent, ParameterConfig config, String id, String indexPath) {
|
||||||
sampler.setProperty("MS-ID", id);
|
sampler.setProperty("MS-ID", id);
|
||||||
sampler.setProperty("MS-RESOURCE-ID", ElementUtil.getResourceId(id, config, parent, indexPath));
|
sampler.setProperty("MS-RESOURCE-ID", ElementUtil.getResourceId(id, config, parent, indexPath));
|
||||||
|
|
|
@ -146,7 +146,7 @@ public class MsScenario extends MsTestElement {
|
||||||
// 这里加入自定义变量解决ForEach循环控制器取值问题,循环控制器无法从vars中取值
|
// 这里加入自定义变量解决ForEach循环控制器取值问题,循环控制器无法从vars中取值
|
||||||
scenarioTree.add(valueSupposeMock);
|
scenarioTree.add(valueSupposeMock);
|
||||||
if (this.variableEnable != null && this.variableEnable) {
|
if (this.variableEnable != null && this.variableEnable) {
|
||||||
scenarioTree.add(ElementUtil.argumentsToProcessor(valueSupposeMock));
|
scenarioTree.add(ElementUtil.argumentsToUserParameters(valueSupposeMock));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (this.variableEnable == null || this.variableEnable) {
|
if (this.variableEnable == null || this.variableEnable) {
|
||||||
|
|
Loading…
Reference in New Issue