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, paramu003dCoinsPayRecordReq [userKeyu003d, appIdsu003d[5000004575, 5000004571, 5000004572, 5000004573, 5000004574], startDateu003d2015-09-09, endDateu003d2018-09-02]"}

       无需把预期结果map的"err"的值也写这么完整,只需要写"CoinsRecordReq is invalid"同样可以达到对比结果的效果。

当然,每个人的接口测试结果对比要求严格程度不一样,上面的方法只是一种取巧的方式。

原文地址:https://www.cnblogs.com/kuzaman/p/7657507.html