soapui常用脚本1

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}' )

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是开发Http/WebService/Socket协议脚本的基本步骤: 1. 确定测试工具和框架:选择合适的测试工具和框架来编写协议脚本。例如,Apache JMeter是一个常用的Http协议测试工具,SoapUI是一个常用的WebService协议测试工具,Netty是一个常用的Socket协议测试框架。 2. 设计测试用例:根据协议的特点和需求,设计合适的测试用例。测试用例应该覆盖协议的各个方面,包括请求参数、响应状态码、响应内容等。 3. 编写测试脚本:根据测试用例,编写相应的测试脚本。测试脚本应该能够发送请求、接收响应,并对响应进行断言和验证。 以下是一个简单的Http协议测试脚本示例: ```java import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; public class HttpTest { public static void main(String[] args) throws Exception { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet("http://example.com/api/userinfo?token=test_token"); CloseableHttpResponse response = httpClient.execute(httpGet); HttpEntity entity = response.getEntity(); String responseBody = EntityUtils.toString(entity); System.out.println(responseBody); response.close(); httpClient.close(); } } ``` 在这个例子中,我们使用Apache HttpClient库来发送Http请求和接收响应。我们首先创建一个CloseableHttpClient对象,然后使用HttpGet对象来设置请求的URL和参数。使用httpClient.execute()方法发送请求,并获取响应。使用HttpEntity对象来获取响应内容,并使用EntityUtils.toString()方法将内容转换为字符串。最后,我们输出响应内容并关闭连接。 类似的,我们可以使用其他工具和框架来编写WebService或Socket协议的测试脚本,具体实现方式可以根据实际情况做出调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值