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"同样可以达到对比结果的效果。

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

转载于:https://www.cnblogs.com/kuzaman/p/7657507.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值