SoapUI自动化--Groovy脚本自动化Check(数据的比较和数据为空的判断).
上次介绍了SoapUI中如何抽取数据库的数据,这为我们实现自动化Check提供了很大的帮助.那这次就献上一些Check的脚本.
之前的文章介绍,数据从数据库中抽取出来后,存放的格式为Map类型.因为要比较每一组数据,且需要定位到是哪组数据除了问题,必须使用到遍历.所以API上提供的方法就不能使用,必须重新写方法.代码如下
Compare.groovy
package com.shengpay.qa.db class Compare { public boolean compareMap(Map ActualData,Map ExceptedData,log){ if(ActualData==null||ExceptedData==null) { log.info "对比值不能为空" return false } //if(ActualData==ExceptedData) //{ //log.info "两个对比值为同一个值" //return true //} if(ActualData.size()!=ExceptedData.size()) { log.info "两个对比值的数量不等" return false } Iterator it=ActualData.keySet().iterator() boolean Flag=true while(it.hasNext()) { def TempKey=it.next() if(ExceptedData.containsKey(TempKey)) { if(ExceptedData.get(TempKey)==ActualData.get(TempKey)) log.info TempKey+""+" is Ok " else if(ExceptedData.get(TempKey)!=ActualData.get(TempKey)) { Flag=false log.debug TempKey+"is Wrong!期望值为"+ExceptedData.get(TempKey)+" 实际值为"+ActualData.get(TempKey) } } } if(Flag==true) log.info "最后结果:期望值和实际值相等" return Flag } }
方法说明:compareMap(Map ActualData,Map ExceptedData,log),第一个参数为实际值,一般取数据库的数据,第二个参数为期望值,一般从Request中取值,第三个为系统自带的log变量,记录日志.
调用方法:
Compare c=new Compare() boolean result=c.compareMap(InputField,Record,log) assert result==true
调用说明:第一步为定义一个Compare实例;第二步调用实例的方法进行比较,将比较的结果返回给result;调用系统的断言,判断最后的结果是否正确.
========================================================华丽的分割线==========================================================================
在测试接口的过程中,我们经常会遇到这样的数据.创建时间,最后更新时间等等.这类数据是没有一个准确的期望值的,但是如果这些字段为空的话,也算是一个C类的BUG.所以必须有一个检查字段是否为空的脚本来Check这些字段,脚本如下:
package com.shengpay.qa.db class IsNotEmpty { public static boolean isNotEmpty(Map<String,String> Map){ boolean result=true if(Map.isEmpty()==true) { result=false return result } Iterator it=Map.keySet().iterator() while(it.hasNext()) { String TempKey=(String)it.next() if(Map.get(TempKey)==null) result=false } return result } }
方法说明:isNotEmpty(Map<String,String> Map),入参为Map,即被检查的Map对象,也就是从数据库中取出来的数据.这个方法只判断Value的值是否存在为空,因为key是由字段的名称组成的,不可能为空.