簡體   English   中英

我是否需要在 Jmeter 項目中導入任何 Jar 文件才能使用“import groovy.json.*”?? 我該怎么做?

[英]Do I need to import any Jar file in Jmeter project in order to use " import groovy.json.*"?? how should I do that?

我試圖通過以下代碼驗證我的 API 的 JSON,但它失敗了。 可能是什么原因 ?

import groovy.json.*

JSONObject obj1 = '''{"success":true,"error":null,"data":{"Months":[{"Id":0,"MDN":"January 2020","H":[{"MI":100,"MN":"API Automation Testing Lower the better Metric-Sum","GL":"B","DS":"%","RT":"s"},{"MI":101,"MN":"API Automation Testing Higher the better Metric-Sum","GL":"A","DS":"%","RT":"s"},{"MI":102,"MN":"API Automation Testing Higher the better Metric-AVG","GL":"A","DS":"s","RT":"a"},{"MI":103,"MN":"API Automation Testing Lower the better Metric-Number-AVG","GL":"B","DS":"s","RT":"a"}],"T":[{"MI":100,"VL":"20.00","NA":false,"PTG":0.0,"S":null},{"MI":101,"VL":"0.20","NA":false,"PTG":0.0,"S":null},{"MI":102,"VL":"0.00","NA":true,"PTG":0.0,"S":null},{"MI":103,"VL":"0.20","NA":false,"PTG":0.0,"S":null}],"MR":[{"MI":100,"VL":"1,536.00","NA":false,"PTG":1.0,"S":"danger"},{"MI":101,"VL":"0.00","NA":true,"PTG":0.0,"S":null},{"MI":102,"VL":"0.00","NA":true,"PTG":0.0,"S":null},{"MI":103,"VL":"0.00","NA":true,"PTG":0.0,"S":null}],"WR":[{"WN":1,"DT":[{"MI":100,"VL":"0.00","NA":true,"PTG":0.0,"S":null},{"MI":101,"VL":"0.00","NA":true,"PTG":0.0,"S":null},{"MI":102,"VL":"0.00","NA":true,"PTG":0.0,"S":null},{"MI":103,"VL":"0.00","NA":true,"PTG":0.0,"S":null}],"SD":"29/12/2019","ED":"04/01/2020"},{"WN":2,"DT":[{"MI":100,"VL":"1,536.00","NA":false,"PTG":1.0,"S":"danger"},{"MI":101,"VL":"0.00","NA":true,"PTG":0.0,"S":null},{"MI":102,"VL":"0.00","NA":true,"PTG":0.0,"S":null},{"MI":103,"VL":"0.00","NA":true,"PTG":0.0,"S":null}],"SD":"05/01/2020","ED":"11/01/2020"},{"WN":3,"DT":[{"MI":100,"VL":"0.00","NA":true,"PTG":0.0,"S":null},{"MI":101,"VL":"0.00","NA":true,"PTG":0.0,"S":null},{"MI":102,"VL":"0.00","NA":true,"PTG":0.0,"S":null},{"MI":103,"VL":"0.00","NA":true,"PTG":0.0,"S":null}],"SD":"12/01/2020","ED":"18/01/2020"},{"WN":4,"DT":[{"MI":100,"VL":"0.00","NA":true,"PTG":0.0,"S":null},{"MI":101,"VL":"0.00","NA":true,"PTG":0.0,"S":null},{"MI":102,"VL":"0.00","NA":true,"PTG":0.0,"S":null},{"MI":103,"VL":"0.00","NA":true,"PTG":0.0,"S":null}],"SD":"19/01/2020","ED":"25/01/2020"}],"SD":"01/01/2020","ED":"31/01/2020"}],"MND":"2019-12-29T00:00:00Z","MXD":"2020-01-25T00:00:00Z"}}'''
JSONObject obj2 = prev.getResponseDataasString()
ObjectMapper mapper = new ObjectMapper();
JsonNode expected = mapper.readTree(obj1.toString());
JsonNode actual = mapper.readTree(obj2.toString());
if (!expected.equals(actual)) {
    AssertionResult.setFailure(true)
}

錯誤:

斷言錯誤:true 斷言失敗:false 斷言失敗消息:javax.script.ScriptException:org.codehaus.groovy.control.MultipleCompilationErrorsException:啟動失敗:Script36.groovy:6:無法解析類 JSONObject @第 6 行,第 12 列。 obj1 = '''{"success":true,"error":null,"data":{"Months":[{"Id":0,"MDN":"January 2020","H":[{ "MI":100,"MN":"API 自動化測試降低更好的 Metric-Sum","GL":"B","DS":"%","RT":"s"},{"MI ":101,"MN":"API 自動化測試越高越好 Metric-Sum","GL":"A","DS":"%","RT":"s"},{"MI": 102,"MN":"API自動化測試越高越好Metric-AVG","GL":"A","DS":"s","RT":"a"},{"MI":103, "MN":"API 自動化測試越低越好 Metric-Number-AVG","GL":"B","DS":"s","RT":"a"}],"T":[{ "MI":100,"VL":"20.00","NA":false,"PTG":0.0,"S":null},{"MI":101,"VL":"0.20","NA ":false,"PTG":0.0,"S":null},{"MI":102,"VL":"0.00","NA":true,"PTG":0.0,"S":null} ,{"MI":103,"VL":"0.20","NA":false,"PTG":0.0,"S":null}],"MR":[{"MI":100,"VL ":"1,53 6.00","NA":false,"PTG":1.0,"S":"danger"},{"MI":101,"VL":"0.00","NA":true,"PTG":0.0 ,"S":null},{"MI":102,"VL":"0.00","NA":true,"PTG":0.0,"S":null},{"MI":103," VL":"0.00","NA":true,"PTG":0.0,"S":null}],"WR":[{"WN":1,"DT":[{"MI":100 ,"VL":"0.00","NA":true,"PTG":0.0,"S":null},{"MI":101,"VL":"0.00","NA":true," PTG":0.0,"S":null},{"MI":102,"VL":"0.00","NA":true,"PTG":0.0,"S":null},{"MI" :103,"VL":"0.00","NA":true,"PTG":0.0,"S":null}],"SD":"29/12/2019","ED":"04/ 01/2020"},{"WN":2,"DT":[{"MI":100,"VL":"1,536.00","NA":false,"PTG":1.0,"S":"危險"},{"MI":101,"VL":"0.00","NA":true,"PTG":0.0,"S":null},{"MI":102,"VL":" 0.00","NA":true,"PTG":0.0,"S":null},{"MI":103,"VL":"0.00","NA":true,"PTG":0.0," S":null}],"SD":"05/01/2020","ED":"11/01/2020"},{"WN":3,"DT":[{"MI":100 ,"VL":"0.00","NA":true,"PTG":0.0,"S":null},{"MI":101,"VL":"0.00","NA":true," PTG":0.0,"S":null},{"MI":102,"VL":"0.00","NA":true,"PTG":0.0,"S":null},{"MI" :103,"VL":"0.00","NA":true,"PTG":0.0,"S":null}],"SD":"12/01/2020","ED":"18/ 01/2020"},{"WN":4 ,"DT":[{"MI":100,"VL":"0.00","NA":true,"PTG":0.0,"S":null},{"MI":101,"VL" :"0.00","NA":true,"PTG":0.0,"S":null},{"MI":102,"VL":"0.00","NA":true,"PTG":0.0 ,"S":null},{"MI":103,"VL":"0.00","NA":true,"PTG":0.0,"S":null}],"SD":"19/ 01/2020","ED":"25/01/2020"}],"SD":"01/01/2020","ED":"31/01/2020"}],"MND":" 2019-12-29T00:00:00Z","MXD":"2020-01-25T00:00:00Z"}}''' ^

Script36.groovy: 7: 無法解析類 JSONObject @ 第 7 行,第 12 列。JSONObject obj2 = prev.getResponseDataasString() ^

Script36.groovy: 8: 無法解析類 ObjectMapper @ 第 8 行,第 14 列。 ObjectMapper mapper = new ObjectMapper(); ^

Script36.groovy: 8: 無法解析類 ObjectMapper @ 第 8 行,第 23 列。 ObjectMapper mapper = new ObjectMapper(); ^

Script36.groovy: 9: 無法解析類 JsonNode @ 第 9 行,第 10 列。預期 JsonNode = mapper.readTree(obj1.toString()); ^

Script36.groovy: 10: 無法解析類 JsonNode @ 第 10 行,第 10 列。JsonNode 實際 = mapper.readTree(obj2.toString()); ^

6 錯誤

JSONObject不是一個 groovy 對象——它可能來自某個庫(比如簡單的 json),如果你想使用這個類應該很重要。

但是,提供的常規代碼是錯誤的: obj1是一個 GString,因此這里不可能進行轉換。 因此,您真的應該閱讀有關您選擇的 json 處理庫的教程,以獲得正確的語法。

總而言之,作為一般說明,如果您已經在使用 Groovy,請考慮使用內置JSONSlurper

import groovy.json.*

def obj1 =...
def slurper = new JsonSlurper()
def json1Obj = slurper.parseText(obj1)
...

查看ObjectMapper似乎您正在嘗試使用Jackson ,這意味着您需要jackson-databindJMeter Classpath 中的最小依賴集( jackson-corejackson-annotations

您也不需要這些JSONObjectJsonNode ,您的代碼可以修改為:

def obj1 = '''your json here'''
def obj2 = prev.getResponseDataAsString()

def mapper = new com.fasterxml.jackson.databind.ObjectMapper()

def expected = mapper.readTree(obj2)
def actual = mapper.readTree(obj2)

if (!expected.equals(actual)) {
    AssertionResult.setFailure(true)
}

更多信息:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM