2017-08-29 42 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