zoukankan      html  css  js  c++  java
  • BeanShell断言:根据响应的2个数据的比较结果来决定断言

    需求:目前有一个请求,请求的响应中有2个值,aaa和bbb,我们比较aaa和bbb,如果aaa大于bbb,则断言通过,否则失败。

    1.添加一个Dummy Sampler,模拟请求。

    2.添加2个正则表达式处理器,分别提取aaa和bbb的值。

    3.添加BeanShell断言。代码如下:

    //方式1:直接取aaa,bbb的值,并将结果进行比较
    int x=${aaa};
    int y=${bbb};
    
    if(x<=y){
    	Failure=true;
    	FailureMessage="aaa小于等于bbb";
    	}
    
    //方式2:通过vars.get("变量名")取得字符串的值,然后通过Integer.parseInt()将其变为整型再进行比较
    String  x = vars.get("aaa");
    String  y = vars.get("bbb");
    
    if(Integer.parseInt(x)<=Integer.parseInt(y)){
    	Failure=true;
    	FailureMessage="aaa小于等于bbb";
    	//log.info("断言失败:aaa小于等于bbb");
    }
    

    4.在查看结果树中查看结果如下

    5.思考:如果aaa,bbb的值带有小数呢,上述两种方式还可以吗?

    比如说把请求的响应修改为{"aaa":"1.9","bbb":"1.1"},则

    通过方式1运行结果,还是断言失败,因为本来aaa大于bbb,取整后,aaa等于bbb了;

    通过方式2运行结果,报错:Error invoking bsh method: eval Sourced file: inline evaluation of: ``String  x = vars.get("aaa"); String  y = vars.get("bbb");  if(Integer.parseInt(x . . . '' : Method Invocation Integer.parseInt 。

    显然不可以。

    因此,当需要比较的两个值可能是小数时,我们需要用方式3或方式4来写断言。

    //方式3:
    double x=${aaa};
    double y=${bbb};
    
    if(x<=y){
    	Failure=true;
    	FailureMessage="aaa小于等于bbb";
    	}
    
    //方式4:
    String  x = vars.get("aaa");
    String  y = vars.get("bbb");
    
    if(Double.parseDouble(x)<=Double.parseDouble(y)){
    	Failure=true;
    	FailureMessage="aaa小于等于bbb";
    	log.info("断言失败:aaa小于等于bbb");
    }
    

    说白了,就是将int换成double,Integer.parseInt()换成Double.parseDouble()了。

  • 相关阅读:
    Apache Kafka:下一代分布式消息系统
    深入理解Java之线程池
    JAVA中线程同步的方法(7种)汇总
    String、StringBuffer与StringBuilder之间区别
    Java中是否可以继承String类,为什么
    JAVA4种线程池的使用
    一分钟教你知道乐观锁和悲观锁的区别
    java常见面试题及答案 11-20(JVM)
    springmvc中的页面解析器ViewResolver不起作用,变量输出字符串的解决方案
    SpringMVC默认欢迎页面的问题
  • 原文地址:https://www.cnblogs.com/zhengna/p/11190624.html
Copyright © 2011-2022 走看看