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

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

  • 相关阅读:
    多层级makefile
    vscode常用快捷键
    unix socket接口
    以太网复习
    shell脚本算术运算
    1185: 零起点学算法92——单词数(C)
    1183: 零起点学算法90——海选女主角(C语言)
    1181: 零起点学算法88——偶数求和(C语言)
    1144: 零起点学算法51——数组中删数(C语言)
    列主元消去法&全主元消去法——Java实现
  • 原文地址:https://www.cnblogs.com/kuzaman/p/7657507.html
Copyright © 2020-2023  润新知