Compare Normal List
/*
* 对比接口返回列表数据与期望的列表数据一致
* 参数:e_step 期望测试步骤名称
* a_step 实际测试步骤名称
* e_field 期望校验结果字段
* a_field 实际校验结果字段
*
*/
def e_step = 'sqlQuery list'
def a_step = 'getApplyFormList'
def e_field = 'ID'
def a_field = 'id'
def e_count = context.expand( '${'+e_step+'#ResponseAsXml#count(//Response[1]/e)}' ).toInteger();
def a_count = context.expand( '${'+a_step+'#ResponseAsXml#count(//Response[1]/e)}' ).toInteger();
if(e_count == a_count){
for(n=1;n<e_count;n++){
def e_id = context.expand( '${'+e_step+'#ResponseAsXml#//Response[1]/e['+n+']/aMap[1]/'+e_field+'[1]}' )
def a_id = context.expand( '${'+a_step+'#ResponseAsXml#//Response[1]/e['+n+']/'+a_field+'[1]}' )
assert e_id == a_id
}
}else{
assert false
}
Compare Same Value List
/*
* 当排序值一致时,
* 当校验字段顺序不一样,先对比排序值,若排序值一致,则校验成功,否则失败
*/
def count = context.expand( '${sqlQuery - List#ResponseAsXml#count(//Response[1]/e)}' ).toInteger()
def e_field = 'FID'
def r_field = 'fId'
def e_sort = 'FEEDBACKDATE'
def r_sort = 'feedbackDate'
def result = true
for(rownum in 1 .. count){
expect = context.expand( '${sqlQuery - List#ResponseAsXml#//Response[1]/e['+rownum+']/aMap[1]/'+e_field+'[1]}' )
response = context.expand( '${Request - List#ResponseAsXml#//Response[1]/e['+rownum+']/'+r_field+'[1]}' )
if(expect!=response){
e_orderBy = context.expand( '${sqlQuery - List#ResponseAsXml#//Response[1]/e['+rownum+']/aMap[1]/'+e_sort+'[1]}' )
r_orderBy = context.expand( '${Request - List#ResponseAsXml#//Response[1]/e['+rownum+']/'+r_sort+'[1]}' )
result = result&&(e_orderBy == r_orderBy)
}else{
result = result&&(response == expect)
}
// log.info(result.toString()+' '+expect+' - '+response)
}
//return expect
assert result == true
Compare No Sort List
/*
* 校验不排序列表的值
*/
def endpoint = context.expand( '${#Project#Endpoint}' )
def e_field = 'TID'
def r_field = context.expand( '${Properties#field}' )
def e_list = []
def r_list = []
def result = true
def e_count = context.expand( '${Term Info#ResponseAsXml#count(//Response[1]/e)}' ).toInteger()
def r_count = context.expand( '${getNodeById#ResponseAsXml#declare namespace ns1=\''+endpoint+'/management/node/detail\'; count(//ns1:Response[1]/ns1:fieldValues[1]/ns1:'+r_field+'[1]/ns1:terms[1]/ns1:e)}' ).toInteger()
for(num1 in 1..e_count){
tid = context.expand( '${Term Info#ResponseAsXml#//Response[1]/e['+num1+']/aMap[1]/'+e_field+'[1]}' )
e_list.add(tid)
}
for(num2 in 1..r_count){
id = context.expand( '${getNodeById#ResponseAsXml#declare namespace ns1=\''+endpoint+'/management/node/detail\'; //ns1:Response[1]/ns1:fieldValues[1]/ns1:'+r_field+'[1]/ns1:terms[1]/ns1:e['+num2+']/ns1:id[1]}' )
r_list.add(id)
}
//log.info(e_count+' '+r_count)
//log.info(e_list.sort())
//log.info(r_list.sort())
assert e_count==r_count&&e_list.sort()==r_list.sort()
Time
/*
* 将日期字段的值转换成期望的日期格式
*/
import java.text.SimpleDateFormat;
date = new Date()
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd")
//SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
e_time = format.format(date)
log.info(date)
log.info(e_time)
e_time=e_time.toInteger();
/*
* 获取当前时间毫秒数
*/
timeStamp = System.currentTimeMillis()
import java.text.SimpleDateFormat;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date dateNow = new Date();
Calendar cl = Calendar.getInstance();
cl.setTime(dateNow);
cl.add(Calendar.MONTH, -1); //一个月
Date dateFrom = cl.getTime();
e_time=sdf.format(dateFrom)
setProperty
/*
* 设置工程全局变量的值,
* 1)变量在工程中不存在,先增加变量,再赋值
* 2)变量在工程中存在,直接赋值
*
*/
def user= 'name'
if(testRunner.testCase.testSuite.project.getProperty("user") == null){
testRunner.testCase.testSuite.project.addProperty("user");
}
testRunner.testCase.testSuite.project.getProperty("user").setValue(user);
//设置测试用例的参数值
if(testRunner.testCase.getProperty("user") == null){
testRunner.testCaset.addProperty("user");
}
testRunner.testCase.getProperty("user").setValue(user);
set Properties Value
/*
* 这是测试步骤Properties的参数及值
* Properties:步骤的名称
* name:参数名
* value:参数值
*/
def value = 'myName'
testRunner.testCase.testSteps["Properties"].setPropertyValue("name",value)
run testStep
/*
* 执行测试步骤
* deleteUser2Group:测试步骤的名称
*/
testRunner.runTestStepByName("deleteUser2Group")
get Assertion Result
/*
* 获取测试步骤中断言失败结果
* 多用于循环校验大量数据,测试步骤中又有多个测试断言,结合DataSink步骤,可以精确判断出失败的断言
*/
def Step = testRunner.testCase.testSteps["PBIService - Term"]
def ErrorAssertion = ''
for( assertion in Step.assertionList ){
status = assertion.status.toString()
if(status=='FAILED'){
ErrorAssertion = ErrorAssertion+assertion.label+' Error ['+assertion.errors+'],\n'
}
}
return ErrorAssertion
Get http status
int status = messageExchange.getResponseStatusCode()
Get the request headers
Get the request headers
获取响应时间
long time = messageExchange.getTimeTaken()
Response
def Response = context.expand( '${del#Response}' )