testing - soapUI: How to access Test Step property from assertion script? -
i'm new soapui , groovy, experienced java programmer.
i created testcase 2 test steps:
- properties step called
cid
single propertycorrelationid
, value${=java.util.uuid.randomuuid()}
. test request
put<correlationid>${correlationid}</correlationid>
in request.
it works , submits unique correlationid
value every time run tests.
now want add new script assertion test step 2 (test request
) compares computed correlationid
property value test step 1 (cid
) data test step 2 response. problem can not seem able access generated value of correlationid
there.
if try this: log.info "${correlationid}"
i get: no such property: correlationid class: script19
if try this: log.info "${cid#correlationid}"
i get:
startup failed: script43.groovy: 1: unexpected char: '#' @ line 1, column 16. log.info "${cid#correlationid}" ^ org.codehaus.groovy.syntax.syntaxexception: unexpected char: '#' @ line 1, column 16. @ org.codehaus.groovy.antlr.antlrparserplugin.transformcstintoast(antlrparserplugin.java:97) @ org.codehaus.groovy.antlr.antlrparserplugin.parsecst(antlrparserplugin.java:71) @ org.codehaus.groovy.control.sourceunit.parse(sourceunit.java:236) @ org.codehaus.groovy.control.compilationunit$1.call(compilationunit.java:158) @ org.codehaus.groovy.control.compilationunit.applytosourceunits(compilationunit.java:814) @ org.codehaus.groovy.control.compilationunit.dophaseoperation(compilationunit.java:511) @ org.codehaus.groovy.control.compilationunit.processphaseoperations(compilationunit.java:487) @ org.codehaus.groovy.control.compilationunit.compile(compilationunit.java:464) @ groovy.lang.groovyclassloader.doparseclass(groovyclassloader.java:306) @ groovy.lang.groovyclassloader.parseclass(groovyclassloader.java:287) @ groovy.lang.groovyshell.parseclass(groovyshell.java:727) @ groovy.lang.groovyshell.parse(groovyshell.java:739) @ groovy.lang.groovyshell.parse(groovyshell.java:766) @ groovy.lang.groovyshell.parse(groovyshell.java:757) @ com.eviware.soapui.support.scripting.groovy.soapuigroovyscriptengine.compile(soapuigroovyscriptengine.java:148) @ com.eviware.soapui.support.scripting.groovy.soapuigroovyscriptengine.run(soapuigroovyscriptengine.java:93) @ com.eviware.soapui.impl.wsdl.teststeps.assertions.basic.groovyscriptassertion.assertscript(groovyscriptassertion.java:116) @ com.eviware.soapui.impl.wsdl.teststeps.assertions.basic.groovyscriptassertion.internalassertresponse(groovyscriptassertion.java:133) @ com.eviware.soapui.impl.wsdl.teststeps.wsdlmessageassertion.assertresponse(wsdlmessageassertion.java:156) @ com.eviware.soapui.impl.wsdl.teststeps.wsdltestrequest.assertresponse(wsdltestrequest.java:189) @ com.eviware.soapui.impl.wsdl.teststeps.wsdltestrequest.setresponse(wsdltestrequest.java:159) @ com.eviware.soapui.impl.wsdl.teststeps.wsdltestrequeststep.run(wsdltestrequeststep.java:346) @ com.eviware.soapui.impl.wsdl.testcase.wsdltestcaserunner.runteststep(wsdltestcaserunner.java:207) @ com.eviware.soapui.impl.wsdl.testcase.wsdltestcaserunner.internalrun(wsdltestcaserunner.java:138) @ com.eviware.soapui.impl.wsdl.testcase.wsdltestcaserunner.internalrun(wsdltestcaserunner.java:39) @ com.eviware.soapui.impl.wsdl.support.abstracttestrunner.run(abstracttestrunner.java:135) @ java.util.concurrent.executors$runnableadapter.call(unknown source) @ java.util.concurrent.futuretask$sync.innerrun(unknown source) @ java.util.concurrent.futuretask.run(unknown source) @ java.util.concurrent.threadpoolexecutor$worker.runtask(unknown source) @ java.util.concurrent.threadpoolexecutor$worker.run(unknown source) @ java.lang.thread.run(unknown source) caused by: script43.groovy:1:16: unexpected char: '#' @ org.codehaus.groovy.antlr.parser.groovylexer.nexttoken(groovylexer.java:695) @ org.codehaus.groovy.antlr.parser.groovylexer$1.nexttoken(groovylexer.java:248) @ groovyjarjarantlr.tokenbuffer.fill(tokenbuffer.java:69) @ groovyjarjarantlr.tokenbuffer.la(tokenbuffer.java:80) @ groovyjarjarantlr.llkparser.la(llkparser.java:52) @ org.codehaus.groovy.antlr.parser.groovyrecognizer.nls(groovyrecognizer.java:780) @ org.codehaus.groovy.antlr.parser.groovyrecognizer.openorclosableblock(groovyrecognizer.java:8848) @ org.codehaus.groovy.antlr.parser.groovyrecognizer.stringconstructorvaluepart(groovyrecognizer.java:13449) @ org.codehaus.groovy.antlr.parser.groovyrecognizer.stringconstructorexpression(groovyrecognizer.java:11932) @ org.codehaus.groovy.antlr.parser.groovyrecognizer.primaryexpression(groovyrecognizer.java:11091) @ org.codehaus.groovy.antlr.parser.groovyrecognizer.argumentlabel(groovyrecognizer.java:10863) @ org.codehaus.groovy.antlr.parser.groovyrecognizer.commandargument(groovyrecognizer.java:10756) @ org.codehaus.groovy.antlr.parser.groovyrecognizer.commandarguments(groovyrecognizer.java:10173) @ org.codehaus.groovy.antlr.parser.groovyrecognizer.expressionstatement(groovyrecognizer.java:8948) @ org.codehaus.groovy.antlr.parser.groovyrecognizer.statement(groovyrecognizer.java:1258) @ org.codehaus.groovy.antlr.parser.groovyrecognizer.compilationunit(groovyrecognizer.java:650) @ org.codehaus.groovy.antlr.antlrparserplugin.transformcstintoast(antlrparserplugin.java:93) ... 31 more 1 error
how can access correlationid
computed value assertion groovy script?
thank you
the problem approach if access property, dynamic , uuid different each time read value of property.
instead replaced properties
test step setup script of test case:
uuid = context.expand('${=java.util.uuid.randomuuid()}') testrunner.testcase.setpropertyvalue("correlationid", uuid)
each time test case executes, new uuid
generated. future test steps may access static test case level property.
in test request use:
<correlationid>${#testcase#correlationid}</correlationid>
in script assertion use:
correlationid = context.expand('${#testcase#correlationid}')
thanks unhandled soapui forums.
Comments
Post a Comment