SoapUI官方文档资料比较详细,这个是地址http://www.soapui.org/Scripting-Properties/tips-a-tricks.html#1-accessing-properties-settings-and-names
常用代码范例:
1. XML node
import com.eviware.soapui.support.XmlHolder
def holder = new XmlHolder( messageExchange.getResponseContent())
def idNodeValue = holder.getNodeValue("//company/id");
assert idNodeValue as int
assert holder["//company/id"] !=null && holder["//company/name"]!=null
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def holder = groovyUtils.getXmlHolder( context.response )
//def holder = groovyUtils.getXmlHolder( "{StepName}#Response" )
log.info "company name = " + holder['//company/name']
//log.info("company name = " + holder.getNodeValue('//company/name'))
2. Get/Set property
def String source = messageExchange.modelItem.testStep.testCase.testSuite.project.getPropertyValue( "companyfields" );
def currentEnv = testRunner.testCase.testSuite.project.getPropertyValue( "env" ).toLowerCase();
testRunner.testCase.testSuite.project.setPropertyValue( "loginURL", currentLoginURL )
注意:在groovy脚本中用testRunner, 否则用messageExchange.modelItem
3. Property transfer
1. 从 source request 到 target request, 用transfer
source(request step’
response):
declare namespace
sam='http://www.example.org/sample/';
//sam:loginResponse/sessionid
target(other request step):
declare namespace
sam='http://www.example.org/sample/';
//sam:logout/sessionid
2. 直接用expension
格式为${request name#Response#Xpath}
e.g. ${GetSummaryViewData - Request 1#Response#//Document[1]/@documentId}
4. jason转xml
import net.sf.json.JSONObject
import com.eviware.soapui.support.GroovyUtils
import com.eviware.soapui.support.XmlHolder
import org.w3c.dom.Node
import org.apache.commons.lang.StringUtils
import com.eviware.soapui.impl.rest.support.handlers.JsonXmlSerializer
String content = messageExchange.getResponseContent()
JSONObject json = JSONObject.fromObject(content)
String xml = new JsonXmlSerializer().write( json )
def groovyUtils = new GroovyUtils(context)
def xmlHolder =groovyUtils.getXmlHolder( xml )
def myNodeValue = xmlHolder["//Account/Id"]
5. 获取step执行结果
import com.eviware.soapui.model.testsuite.TestStepResult.TestStepStatus
def myTestStepResult = testRunner.runTestStepByName("
Test Request - login")
def myStatus = myTestStepResult.getStatus()
if (myStatus == TestStepStatus.OK)
log.info "The step status is: " + myStatus.toString()
else
log.error "The step status is: " + myStatus.toString()
6. 获取case执行结果
importcom.eviware.soapui.model.testsuite.TestRunner.Statusdeftc=deftc=testRunner.testCase.testSuite.testCases["Test Case B"]defrunner=tc.run(newcom.eviware.soapui.support.types.StringToObjectMap(),false)log.info"Status: $runner.status, time: $runner.timeTaken ms.
assert runner.status != Status.FAILED : runner.reason