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

1708

被折叠的 条评论
为什么被折叠?



