2017-08-29 210 views
2

我对jmeter的某些方面仍然很陌生,并且试图解决我遇到的问题。Jmeter - 替换json记录中的值

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

{ “开始时间”: “1487869700”, “QueryEndTime”: “12345678910”, “条款”: “ThingILookFor”, “理”: “ReasonILook” }

我想改变这是这样的:

{ “开始时间”: “1487869700”, “QueryEndTime”: “结束时间”, “条款”: “ThingILookFor” “原因”:“ReasonILoo k“

数字字符串是一个纪元值。 我希望将endTime作为一个变量,可以将它提供给Http中的查询正文并在运行时指定。

我的问题是,我需要改变查询提交给api时的历元值是当前的历元值。

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

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

  1. 阅读我的查询主体(通过CSV数据配置获得)
  2. 更换时期串与当前历时间戳(我通过我的用户定义的变量函数调用生成此)
  3. 通过我的HTTP调用提交editted查询体

显然,任何方式结合其中的一些步骤将是一件好事。

回答

0

未必是 '正确' 的解决方案,但是这是我做了什么和它的工作原理:

1)设置定义的变量currentEpoch

用户

2)currentEpoch的值是作为${__time(/1000,)}我热曲以秒

3)IRE划时代代替我想在测试数据与“replaceQueryStartTimeWithEpoch”

4)设置在它下面的代码BeanShell的采样器,以取代(变量是“查询”)的值:

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

令人高兴的是,这似乎适用于我所需要的。

希望看到更多'优雅'的解决方案。

0

只需使用__time功能

“QueryEndTime”: “$ {__时间()}”

+0

不起作用。将修改我的问题,使问题更清楚。 – Tufty

+0

你能不能展示你的测试摘录 –

+0

不幸的不是。单独的系统,我不能转移的东西。这个问题正如我上面描述的那样。在我将它发送到一个http请求之前,我需要替换一部分json记录。 – Tufty