Java--判斷兩個map對應鍵的值是包含關系


   任務:接口測試中  預期結果(map形式)中某個鍵的值沒有必要寫的完整,也許只是實際響應(map或json轉map形式)中對應鍵的值的一部分即可

  解決方案:

 1     //判斷兩個hashmap相同鍵的值是否包含--Auther:kuzaman
 2     public boolean verifyinclude(Map<String, String> actualMap,
 3             Map<String, String> exceptmap) {
 4         //預期與實際結果map長度不同,則兩者一定不同
 5         if (actualMap.size() != exceptmap.size()){
 6             return false;
 7         }
 8         for(String key : exceptmap.keySet()){
 9             if((actualMap.get(key)).indexOf(exceptmap.get(key)) == -1){
10                 return false;
11             }
12         }
13         //預期與實際結果map長度相同,
14         return true;
15     }

       測試程序:

 1     public static void main(String[] args) {
 2         testc = new test();
 3         //測試判斷map相同鍵的值是否包含的函數verifyinclude
 4         boolean flag;
 5         Map<String, String> actualMap =  new HashMap<String, String>();
 6         Map<String, String> exceptmap =  new HashMap<String, String>();
 7         actualMap.put("code", "1001");
 8         actualMap.put("err", "12345");
 9         exceptmap.put("code", "1001");
10         exceptmap.put("err", "123");
11         //size()相等且值包含,flag=ture
12         flag = c.verifyinclude(actualMap, exceptmap);
13         System.out.println(flag);
14         //size()不相等,flag=false
15         actualMap.put("co", "1001");
16         flag = c.verifyinclude(actualMap, exceptmap);
17         System.out.println(flag);
18         //size()相等但值不包含,flag=false
19         actualMap.remove("co");
20         actualMap.put("err", "1sd23");
21         flag = c.verifyinclude(actualMap, exceptmap);
22         System.out.println(flag);
23 }

測試結果:

1 true
2 false
3 false

實際場景:

  響應:

resp={"code":"1001","err":"CoinsRecordReq is invalid, param\u003dCoinsPayRecordReq [userKey\u003d, appIds\u003d[5000004575, 5000004571, 5000004572, 5000004573, 5000004574], startDate\u003d2015-09-09, endDate\u003d2018-09-02]"}

       無需把預期結果map的"err"的值也寫這么完整,只需要寫"CoinsRecordReq is invalid"同樣可以達到對比結果的效果。

當然,每個人的接口測試結果對比要求嚴格程度不一樣,上面的方法只是一種取巧的方式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM