Jmeter - 替换json记录中的值

时间:2017-08-29 15:16:40

标签: jmeter beanshell

我还是jmeter方面的新手,我正试图解决我遇到的问题。

我正在向api端点提交json记录。 json包含许多参数,包括以下内容:

  

{ “开始时间”: “1487869700”,      “QueryEndTime”: “12345678910”,      “条件”:“ThingILookFor”      “原因”: “ReasonILook”   }

     

我想将此更改为:

     

{ “开始时间”: “1487869700”,      “QueryEndTime”: “结束时间”,      “条件”:“ThingILookFor”      “原因”: “ReasonILook”

数字字符串是一个纪元值。 我希望endTime是一个变量,我可以在Http中输入查询体并在运行时指定。

我的问题是我需要在提交查询时将该纪元值更改为api,作为当前的纪元值。

我尝试过使用Beanshell,但没有成功。

这个(可能非常差的伪代码)就是我想做的事情:

  1. 读入我的查询正文(通过csv数据配置获取)
  2. 用当前纪元时间戳替换纪元字符串(我通过用户自定义变量中的函数调用生成此字符串)
  3. 通过我的http电话
  4. 提交编辑的查询正文

    显然,任何结合其中一些步骤的方法都会很好。

2 个答案:

答案 0 :(得分:0)

只需使用__time功能

即可
  

" QueryEndTime":" $ {__时间(,)}"

答案 1 :(得分:0)

可能不是'正确'的解决方案,但这就是我所做的并且有效:

1)设置用户定义的变量currentEpoch

2)currentEpoch的值为${__time(/1000,)},因为我需要以秒为单位的纪元

3)用“replaceQueryStartTimeWithEpoch”替换我想在测试数据中替换的值(变量是“Query”)

4)设置一个beanhell采样器,其中包含以下代码:

vars.put("Query",vars.get("Query").replace("replaceQueryStartTimeWithEpoch", vars.get("currentEpoch")));

幸运的是,这似乎适用于我需要的东西。

有兴趣看一些更“优雅”的解决方案。