51Testing软件测试论坛

标题: vars.put 赋值失败,在调用beanshell preprocessor相关api之后 [打印本页]

作者: kernelkoder    时间: 2019-12-30 09:40
标题: vars.put 赋值失败,在调用beanshell preprocessor相关api之后
本帖最后由 kernelkoder 于 2019-12-30 09:45 编辑

我的测试需要根据当前http请求参数计算sha1签名,用到了beanshell preprocessorfollowing is beanshell preprocessor source code

  1. import java.util.Date;

  2. import java.util.HashMap;
  3. import java.util.Iterator;
  4. import java.util.Map;
  5. import java.util.Collection;

  6. import org.apache.jmeter.config.Arguments;
  7. import org.apache.jmeter.testelement.property.CollectionProperty;

  8. import org.apache.commons.codec.digest.DigestUtils;


  9. Date date = new Date();
  10. long time = (date.getTime());

  11. String s = String.valueOf(time);

  12. vars.put("timestamp1",s);




  13. Arguments args = sampler.getArguments();
  14. log.info(String.valueOf(args.getArgumentCount()));
  15. Map reqMap = args.getArgumentsAsMap();

  16. reqMap.put("sign_key","123");
  17. reqMap.put("client_id","456");

  18. ArrayList arrlist=new ArrayList();

  19. for(String key:reqMap.keySet()){
  20.     log.info( "key: "+ key + " and value: "+ reqMap.get(key));
  21.     if(key.equals("sign") || key.equals("access_token"))
  22.     {
  23.                 continue;
  24.     }
  25.     arrlist.add(key);
  26. }

  27. Collections.sort(arrlist);
  28. String sign="";
  29. for(int i=0;i<arrlist.size();i++)
  30. {
  31.     String key=(String)arrlist.get(i);
  32.     sign+=key;
  33.     sign+=(String)reqMap.get(key);
  34. }

  35. log.info(sign);

  36. String final_sign=DigestUtils.sha1Hex(sign);


  37. log.info(final_sign);
  38. vars.put("sign1",final_sign);
复制代码



在jmeter GET请求 form中有一个变量 'sign', with value of ${sign1}, 我的意图是用最后的代码把var.put("sign1" , final_sign),把计算好的final_sign,赋值给form里面的那个变量的值.
但是,有问题,我发现,每次调用jemter 相关的api,最后的"vars.put("sign1",final_sign)" 会失效导致最后出去的http请求还是 http....sign={sign1}... 没有被替换掉






欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2