3

我必须做的:
1. 从之前的响应中提取所有客户 ID。
2.洗牌所有ID。3. 在一个请求
中传递所有 id 。(如:custPref - 9768,7651,3215,....)

我使用正则表达式将所有客户 ID 放入一个变量 (custID) 中(设置匹配号 = -1)

通过使用 For Each 控制器,我可以在一个请求中传递一个客户 ID。
但是现在我必须在一个请求中传递所有客户 ID,以在使用逗号分隔值对客户 ID 进行洗牌后设置客户的偏好。

此外,客户 ID 的数量不固定,因此无法将变量用作 ${custID}_g1、${custID}_g0...

您能否建议任何方式来洗牌客户 ID 并在一个请求中传递所有 ID。

4

2 回答 2

3

提示:您可以使用 custID_matchNr.

因此,您的完整 Beanshell 脚本可能如下所示:

import java.util.ArrayList;
import java.util.Collections;

ids = new ArrayList();
idCount = Integer.parseInt(vars.get("custID_matchNr"));
for (int i=0; i<idCount; i++){
  ids.add(vars.get("custID_" + String.valueOf(i+1)));
}

Collections.shuffle(ids);

builder = new StringBuilder();
for (String id: ids){
  builder.append(id);
  builder.append(",");
}
builder.deleteCharAt(builder.length()-1);
vars.put("custPref", builder.toString());
于 2012-12-08T19:14:36.607 回答
0

如果您需要通过 jmeter 将整数数组传递给 web 方法或类似方法,这就是解决方案!

  1. 在 http 请求中使用 Post Body。

  2. 在帖子正文中,您需要传递 json!像这样: {"language":"en", "translationIds":[10254, 3071, 3072, 3073, 3074, 3075, 3076, 3077, 3078, 3079, 3080, 3081, 3082, 3083, 3084, 3085, 3086 ,3087,3088,3089,3090,3091,3092,3093,3094,3095,30996,3097,3098,3099,31100,3101,3102,3103,3104,3105,3106,3107,3108,3109,3110,3108,3109,3110,3111 , 3112, 3113, 3114, 3115, 3116, 3117, 3118, 3513]}"

  3. 您需要 HTTP 标头管理器:Content-Type application/json

图片1

第二张图片

(CODE) 4. 最后,您需要将 [ScriptService] 属性 (C#) 放在包含该方法的类上。

于 2013-07-08T14:39:06.003 回答