2014-05-22 142 views
0

我們使用jMeter進行迴歸測試。我們有2個http請求,並使用比較斷言來確保結果匹配。當響應是xml或原始文本時,這可以正常工作。但是,當響應是JSON對象時,這不起作用。因爲JSON對象將字段存儲在散列中,所以順序不被保留,這意味着比較斷言的差異是不同的,並給我們帶來了錯誤的否定。有沒有人有任何建議如何比較兩個迴應,看看他們是否平等?比較斷言來比較兩個JSON響應

+1

可能的重複[如何比較兩個不同的JSON響應結構在Java?](http://stackoverflow.com/questions/21495272/how-to-compare-two-different-json-response-structure-in- java) – olyv

+0

我結束了導入JSONObject和[JSONCompare](http://skyscreamer.org/JSONassert/javadoc/org/skyscreamer/jsonassert/JSONCompare.html)這是JSONAssertion的後臺邏輯,所以我們使用它來代替比較斷言。很棒。 – user2615862

+0

@olyv這是一個非常不同的問題。我們不知道json的格式。它可能非常不同,所以路徑提取器不幸的是幾乎沒用。我們能夠在BeanShell後處理器和一些自定義編碼中做所有事情。 – user2615862

回答

1

首先按official documentation on Compare Assertion的:

比較斷言絕不負載測試過程中,因爲它消耗 大量的資源(內存和CPU)一起使用。僅將它用於功能 測試或在測試計劃調試和驗證期間。

所以請重新考慮使用Compare Assertion。我能想到的最佳人選是通過JMeter Plugins

Using the XPath Extractor in JMeter指南(向下滾動到Parsing JSON)的XPath來JSONPath查詢映射JSONPath Assertion可用。

或者,您可以使用Size Assertion,Response Assertion,Duration Assertion的組合,它們提供相同的功能但消耗的資源要少得多。

+0

謝謝,我結束了導入JSONObject和[JSONCompare](http://skyscreamer.org/JSONassert/javadoc/org/skyscreamer/jsonassert/JSONCompare.html)這是JSONAsserttion的後臺邏輯,所以我們使用它來代替比較斷言。 我也意識到它說在加載測試時不使用比較斷言,但我們在做迴歸測試時需要它,我們真的不在乎時間(它仍然工作得很快)。 – user2615862