Groovy脚本常用语法

1. soapUi系列
1.1 设置参数值:setPropertyValue
SoapUI允许在项目的各个层次中定义变量,常用的层次包括: Project,TestSuite,TestCase,Global等。具体如下:

a. 设置 project level property
//set to project level property 下面两种写法都可以
testRunner.testCase.testSuite.project.setPropertyValue(“Name”, “propValue”);
testRunner.testCase.getTestSuite().getProject().setPropertyValue(“Name”, “propValue”);; //项目对象

b. 设置 testSuite level property
//set to testSuite level property
testRunner.testCase.testSuite.setPropertyValue(“Name”,“testSuiteValue”);
testRunner.testCase.getTestSuite().setPropertyValue(“Name”,“testSuiteValue”);

c. 设置 testCase level property
//set to testCase level property
testRunner.testCase.setPropertyValue(“Name”,“testCaseValue”);
在这里插入图片描述
d. 设置 testStep level property
//set to testStep level property
testRunner.testCase.testSteps[‘Groovy’].setPropertyValue(“Name”,“testSuiteValue”);
testRunner.testCase.getTestStepByName(“Groovy”).setPropertyValue(“Name”,“testSuiteValue”);

1.2 获取参数值:getPropertyValue
注意,如果在 Groovy Script中获取参数的话,可以用以下方法:def time_num= context.expand (‘${#Project#hospitalId}’) //##号内为定义哪个级别的属性变量,后面为属性名,如下:

a. 获取 project level property
context.expand(“${#Project#FilePath}”)
testRunner.testCase. testSuite.project.getPropertyValue(’ FilePath ')

b. 获取 testSuite level property
context.expand(“${#TestSuite#FilePath}”)
testRunner.testCase. testSuite. getPropertyValue(’ FilePath ')

c. 获取 testCase level property
context.expand(“${#TestCase#FilePath}”)
testRunner.testCase.getPropertyValue(’ FilePath ')

d. 获取 testStep level property
testRunner.testCase.getTestStepByName("Groovy "). getPropertyValue(’ FilePath ')

1.3 获取名称
a. 获取test case的名称:getLabel()
def tc = testRunner.testCase;
log.info (tc.getLabel());

b. 获取test suite的名称:getLabel()
def ts = testRunner.testCase.testSuite;
log.info (ts.getLabel());

c. 获取project 名称
def tp = testRunner.testCase.testSuite.project;
log.info (tp.getName());

1.4 获取testSteps的json响应
def testStep = testRunner.testCase.getTestStepByName(“request”) as HttpTestRequestStep
def respStr = testStep.testRequest.responseContentAsString

JsonSlurper jsonSlurper = new JsonSlurper();
def resp = jsonSlurper.parseText(respStr)

String prepayId = resp[“Response”][“biz_content”][“prepay_id”]
String orderId = resp[“Response”][“biz_content”][“order_id”]
String projectId = resp[“Response”][“biz_content”][“project_infos”] [0][“project_id”]

1.5 json断言
1.5.1 在请求中添加Script Assertion
步骤1:进入请求(请求命名:request)中,选择Assertions,添加Script Assertion
步骤2:在Script Assertion页面输入如下groovy脚本案例:
def respStr = messageExchange.modelItem.testCase.testSteps[“request”].testRequest.response.contentAsString
log.info (“respStr:”+ respStr)
def slurper = new JsonSlurper()
def result = slurper.parseText(respStr)
String code = JsonPath.read(result,“$.Response.Body.ResponseDetail.ResultCode”);
String desc = JsonPath.read(result,“$.Response.Body.ResponseDetail.ResultDesc”);
assert code.equals(“0”)

1.5.2. 在testCase中新建Groovy Script
步骤1:先建REST请求,并创建testSuite和testCase 请求(请求命名:request)
步骤2:在testCase中创建Groovy Script,脚本案例如下:
def respStr = testRunner.testCase.testSteps[“request”].testRequest.response.contentAsString
log.info (“respStr:”+ respStr)
def slurper = new JsonSlurper()
def result = slurper.parseText(respStr)
String code = JsonPath.read(result,“$.Response.Body.ResponseDetail.ResultCode”);
String desc = JsonPath.read(result,“$.Response.Body.ResponseDetail.ResultDesc”);
assert code.equals(“0”)

2. jmeter系列
2.1 获取、存储变量
vars.get(String key):从jmeter中获得变量值;
vars.put(String key,String value):数据存到jmeter变量中;
例如:
vars.put(“OriginatorConversationID”,UUID.randomUUID().toString());
String OriginatorConversationID =vars.get("OriginatorConversationID ");

2.2 获取json请求信息
例如,这是我的请求:
{
“Request”: {
“method”: “test”,
“timestamp”: “#timestamp”,
“url”: “baidu.com”,
“version”: “1.0”
}
}

//获取当前时间戳
long time = System.currentTimeMillis();
def timestamp =String.valueOf(time);

//获取原始请求
def originalRequest = sampler.getArguments().getArgument(0).getValue();

//替代timestamp
originalRequest = originalRequest.replace(‘#timestamp’,timestamp);
sampler.getArguments().getArgument(0).setValue(originalRequest);

2.3 获取json响应信息
String respond =prev.getResponseDataAsString();

def jsonSlurper = new JsonSlurper()
def body = jsonSlurper.parseText(respond);

String timestamp = JsonPath.read(body,"$.Response. timestamp ");

//保存变量
vars.put("timestamp ", timestamp);

2.4 保存结果到文件
//需要在对应目录下创建文件
FileWriter fstream = new FileWriter(“D: \file\test.unl” , true);//true表示在文件末尾追加
BufferedWriter out = new BufferedWriter(fstream);
out.write(vars.get(“timestamp”)+“|”+“\n”);
out.close();
fstream.close();

2.5 json断言
String respond =prev.getResponseDataAsString();

def jsonSlurper = new JsonSlurper()
def body = jsonSlurper.parseText(respond);

String code = JsonPath.read(body,“$.responseCode”);
String desc = JsonPath.read(body,“$.responseDesc”);

if(! “0”.equals(code)) {
AssertionResult.setFailureMessage(“Error message[” + code + “]:” +desc);
AssertionResult.setFailure(true);
}

3. 附录
3.1 soapUI常用类
import java.nio.charset.StandardCharsets
import org.codehaus.groovy.runtime.EncodingGroovyMethods
import groovy.json.JsonOutput
import groovy.json.JsonSlurper
import com.jayway.jsonpath.*
import com.eviware.soapui.impl.wsdl.teststeps.HttpTestRequestStep

3.2 jmeter常用类
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;

import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;
import org.apache.jmeter.threads.JMeterVariables;
import org.apache.jmeter.util.JMeterUtils;

import groovy.json.JsonOutput;
import groovy.json.JsonSlurper;
import com.jayway.jsonpath.JsonPath;

3.3 参考链接
https://www.jianshu.com/p/01d3b6dc9176

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值