diff --git a/backend/src/main/java/io/metersphere/api/dto/definition/request/MsScenario.java b/backend/src/main/java/io/metersphere/api/dto/definition/request/MsScenario.java index 4f321bdca7..77e2c687db 100644 --- a/backend/src/main/java/io/metersphere/api/dto/definition/request/MsScenario.java +++ b/backend/src/main/java/io/metersphere/api/dto/definition/request/MsScenario.java @@ -15,6 +15,7 @@ import io.metersphere.api.service.ApiTestEnvironmentService; import io.metersphere.base.domain.ApiScenarioWithBLOBs; import io.metersphere.base.domain.ApiTestEnvironmentWithBLOBs; import io.metersphere.commons.utils.CommonBeanFactory; +import io.metersphere.commons.utils.ScriptEngineUtils; import io.metersphere.commons.utils.SessionUtils; import lombok.Data; import lombok.EqualsAndHashCode; @@ -132,7 +133,7 @@ public class MsScenario extends MsTestElement { // 场景变量和环境变量 Arguments arguments = arguments(config); if (arguments != null) { - tree.add(arguments); + tree.add(config.valueSupposeMock(arguments)); } this.addCsvDataSet(tree, variables); this.addCounter(tree, variables); diff --git a/backend/src/main/java/io/metersphere/api/dto/definition/request/ParameterConfig.java b/backend/src/main/java/io/metersphere/api/dto/definition/request/ParameterConfig.java index e5117db258..acf0e3313d 100644 --- a/backend/src/main/java/io/metersphere/api/dto/definition/request/ParameterConfig.java +++ b/backend/src/main/java/io/metersphere/api/dto/definition/request/ParameterConfig.java @@ -2,7 +2,9 @@ package io.metersphere.api.dto.definition.request; import io.metersphere.api.dto.definition.request.variable.ScenarioVariable; import io.metersphere.api.dto.scenario.environment.EnvironmentConfig; +import io.metersphere.commons.utils.ScriptEngineUtils; import lombok.Data; +import org.apache.jmeter.config.Arguments; import java.util.List; import java.util.Map; @@ -37,4 +39,13 @@ public class ParameterConfig { } return false; } + + static public Arguments valueSupposeMock(Arguments arguments) { + for(int i = 0; i < arguments.getArguments().size(); ++i) { + String argValue = arguments.getArgument(i).getValue(); + arguments.getArgument(i).setValue(ScriptEngineUtils.calculate(argValue)); + } + return arguments; + } + } \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/api/dto/definition/request/sampler/MsHTTPSamplerProxy.java b/backend/src/main/java/io/metersphere/api/dto/definition/request/sampler/MsHTTPSamplerProxy.java index cf61040421..128685a0e8 100644 --- a/backend/src/main/java/io/metersphere/api/dto/definition/request/sampler/MsHTTPSamplerProxy.java +++ b/backend/src/main/java/io/metersphere/api/dto/definition/request/sampler/MsHTTPSamplerProxy.java @@ -122,7 +122,7 @@ public class MsHTTPSamplerProxy extends MsTestElement { // 添加环境中的公共变量 Arguments arguments = this.addArguments(config); if (arguments != null) { - tree.add(arguments); + tree.add(config.valueSupposeMock(arguments)); } try { if (config.isEffective(this.getProjectId())) { diff --git a/frontend/src/business/components/api/automation/scenario/variable/EditConstant.vue b/frontend/src/business/components/api/automation/scenario/variable/EditConstant.vue index 23f3a945db..84cb7bc194 100644 --- a/frontend/src/business/components/api/automation/scenario/variable/EditConstant.vue +++ b/frontend/src/business/components/api/automation/scenario/variable/EditConstant.vue @@ -1,30 +1,68 @@ - - - - + + + + + - - - + + + - - - - + + + + + + + + + +