• JDBC 与 Bean Shell的使用(二)获取值,并且断言


    这里我们使用的断言方式是BeanShell断言,做一个新增功能的接口测试,

    1.发一个post请求,新增测试数据,然后做一个返回数据的响应断言-------大部分人都可以实现这个功能

    2.如果是后台业务的话,我们的数据时会录入到后端数据库的,那么这里我们使用JDBC后置处理器,来获取数据

    3.获取数据后,我们怎么来比较我们取得值是否和数据库中的一致呢----这里我们引用BeanShell断言

    String name = vars.getObject("devName").get(0).get("name");      //获取SQL查询到的name,有时候会报错declaration----解决办法String改Object
    log.info("name结果是:"+name);                   //打印log,方便调试
    vars.put("resdevName",name.toString());               //把name值传给resdevName,方便后续使用,和正则表达式提取器一样
    String nameExp = "${name}";                    //赋值,期望的name值。这里我传的是一个动态的值,用户定义的变量
    log.info("nameExp结果是:"+nameExp);                
    vars.put("ExpDevName",nameExp.toString());  
    if(!name.equals(nameExp)) {                    //这里是比较语句,如果相等的话,断言成功-正常通过,如果不相等,断言失败-爆红色error
    Failure = true;
    
    FailureMessage = "error,check error";
    
    } else {
    
    FailureMessage = "ok,check current";
    
    }

    4.运行查看结果,这里的Debug Sampler中记录了值,故意在比较的时候加了一个“1”看一下失败的效果

    扩展:

    当然我们也可以多次断言,也可以获取select中的多个值

    Object status = vars.getObject("status").get(0).get("status").toString();
    log.info("上线状态的status是多少"+status);
    String statusExp = "1";
    log.info("上线状态的statusExp希望是"+statusExp);
    
    Object valid_status = vars.getObject("status").get(0).get("valid_status").toString();
    log.info("上线状态的valid_status是多少"+valid_status);
    String valid_statusExp = "1";
    log.info("上线状态的valid_statusExp希望是"+valid_statusExp);
    
    
    Object name = vars.getObject("status").get(0).get("name").toString();
    log.info("上线状态的name是多少"+name);
    String nameExp = "${editName}";            //这里的值取得是编辑后的editName,如果是直接新增的话,应该是newName
    log.info("上线状态的nameExp希望是"+nameExp);
    
    if((!valid_status.equals(valid_statusExp))||(!status.equals(statusExp))||(!name.equals(nameExp))) {            //所有条件都满足才通过,否则error
    
    Failure = true;
    
    FailureMessage = "${status} != ${statusExp}";
    
    } else {
    
    FailureMessage = "ok,check current";
    
    }
    
    
    //本次有2个JDBC后置处理器需要处理,使用了2个判断;不知道有没有跟高级的写法
    Object name_new = vars.getObject("name_version").get(0).get("name").toString();
    log.info("上线状态后编辑的name_new是多少"+name_new);
    String name_newExp = "${onlineName}";
    log.info("上线状态后编辑的name_newExp希望是"+name_newExp);
    
    Object version = vars.getObject("name_version").get(0).get("version").toString();
    log.info("上线状态后编辑的version是多少"+version);
    String versionExp = "2";
    log.info("上线状态后编辑的versionExp希望是"+versionExp);
    
    if((!valid_status.equals(valid_statusExp))||(!status.equals(statusExp))) {
    
    Failure = true;
    
    FailureMessage = "${status} != ${statusExp}";
    
    } else {
    
    FailureMessage = "ok,check current";
    
    }
  • 相关阅读:
    软件测试人员的年终绩效考核怎么应对
    收藏
    顶踩组件 前后两版
    订阅组件
    hdu 1963 Investment 完全背包
    hdu 4939 Stupid Tower Defense 动态规划
    hdu 4405 Aeroplane chess 动态规划
    cf 414B Mashmokh and ACM 动态规划
    BUPT 202 Chocolate Machine 动态规划
    hdu 3853 LOOPS 动态规划
  • 原文地址:https://www.cnblogs.com/nieliangcai/p/10523719.html
Copyright © 2020-2023  润新知