Update JMeterVars.java (#981)
解决使用JSONPath的$..xx的语法匹配多个值时,提取出来的值不应该只有一个, 解决多值匹配时候变量无法传递问题 Co-authored-by: xiangronghua <xiangronghua@163.com>
This commit is contained in:
parent
b824302acf
commit
62a82dbf04
|
@ -1,5 +1,6 @@
|
||||||
package io.metersphere.api.jmeter;
|
package io.metersphere.api.jmeter;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import io.github.ningyu.jmeter.plugin.dubbo.sample.DubboSample;
|
import io.github.ningyu.jmeter.plugin.dubbo.sample.DubboSample;
|
||||||
import org.apache.jmeter.extractor.JSR223PostProcessor;
|
import org.apache.jmeter.extractor.JSR223PostProcessor;
|
||||||
import org.apache.jmeter.extractor.RegexExtractor;
|
import org.apache.jmeter.extractor.RegexExtractor;
|
||||||
|
@ -30,12 +31,29 @@ public class JMeterVars {
|
||||||
* @param vars
|
* @param vars
|
||||||
* @param extract
|
* @param extract
|
||||||
*/
|
*/
|
||||||
public static void addVars(Integer testId, JMeterVariables vars, String extract) {
|
public static void addVars(Integer testId, JMeterVariables vars, String extract) {
|
||||||
JMeterVariables vs = new JMeterVariables();
|
JMeterVariables vs = new JMeterVariables();
|
||||||
|
|
||||||
if (!StringUtils.isEmpty(extract) && vars != null) {
|
if (!StringUtils.isEmpty(extract) && vars != null) {
|
||||||
List<String> extracts = Arrays.asList(extract.split(";"));
|
List<String> extracts = Arrays.asList(extract.split(";"));
|
||||||
Optional.ofNullable(extracts).orElse(new ArrayList<>()).forEach(item -> {
|
Optional.ofNullable(extracts).orElse(new ArrayList<>()).forEach(item -> {
|
||||||
|
|
||||||
|
String nrKey = item + "_matchNr";
|
||||||
|
Object nr = vars.get(nrKey);
|
||||||
|
if (nr != null) {
|
||||||
|
int nrv = 0;
|
||||||
|
try {
|
||||||
|
nrv = Integer.valueOf(String.valueOf(nr));
|
||||||
|
} catch (Exception e) {
|
||||||
|
}
|
||||||
|
if (nrv > 0) {
|
||||||
|
List<Object> data = new ArrayList<>();
|
||||||
|
for (int i = 1; i < nrv + 1; i++) {
|
||||||
|
data.add(vars.get(item + "_" + i));
|
||||||
|
}
|
||||||
|
String array = JSON.toJSONString(data);
|
||||||
|
vars.put(item, array);
|
||||||
|
}
|
||||||
|
}
|
||||||
vs.put(item, vars.get(item) == null ? "" : vars.get(item));
|
vs.put(item, vars.get(item) == null ? "" : vars.get(item));
|
||||||
});
|
});
|
||||||
vs.remove("TESTSTART.MS"); // 标示变量移除
|
vs.remove("TESTSTART.MS"); // 标示变量移除
|
||||||
|
|
Loading…
Reference in New Issue