[英]I need to use $.getJSON in eclipse? how do I declare the import statement for jquery if .jar is in lib?
[英]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-databind與JMeter Classpath 中的最小依賴集( jackson-core和jackson-annotations )
您也不需要這些JSONObject
和JsonNode
,您的代碼可以修改為:
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.