51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2945|回复: 5
打印 上一主题 下一主题

vars.put 赋值失败,在调用beanshell preprocessor相关api之后

[复制链接]
  • TA的每日心情
    无聊
    1 小时前
  • 签到天数: 528 天

    连续签到: 1 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2021-1-8 10:53:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1测试积点
    我的测试需要根据当前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
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-9-30 15:02
  • 签到天数: 751 天

    连续签到: 2 天

    [LV.10]测试总司令

    2#
    发表于 2021-1-11 10:22:32 | 只看该作者
    来学习
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-10-22 14:23
  • 签到天数: 1007 天

    连续签到: 1 天

    [LV.10]测试总司令

    3#
    发表于 2021-1-11 11:17:08 | 只看该作者
    vars.put("sign1",final_sign);  没问题啊,sign1是什么类型?需要转换吗?
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    半小时前
  • 签到天数: 1517 天

    连续签到: 1 天

    [LV.Master]测试大本营

    4#
    发表于 2021-1-11 11:34:23 | 只看该作者
    发送前检查变量的值
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    1 小时前
  • 签到天数: 992 天

    连续签到: 1 天

    [LV.10]测试总司令

    5#
    发表于 2021-1-11 11:55:09 | 只看该作者
    不是很懂 ,来学习下
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2 小时前
  • 签到天数: 2813 天

    连续签到: 1 天

    [LV.Master]测试大本营

    6#
    发表于 2021-1-11 14:50:02 | 只看该作者
    不清楚,学习,顶一下吧
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-18 10:58 , Processed in 0.065877 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表