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是由字段的名称组成的,不可能为空.

 

posted on 2012-10-16 23:33  Kiddo_马  阅读(1140)  评论(0编辑  收藏  举报

导航