Forum Discussion
BTW: the "log.infor" is a typo I've already caught.
Hey wiseAcre
the groovy experts are better placed to answer this than me, but I'll give it a go.
your script is as follows:
def ReferenceID = context.expand ('${#TestCase#ReferenceID}');
ReferenceID = ReferenceID.toInteger() + 1;
if (ReferenceID < 990000) {
testRunner.testCase.setPropertyValue('${TestCase#ReferenceID}'); //LINE 5 Error
log.infor "ReferenceID" + ReferenceID;
testRunner.gotoStepByName("ReferenceID")
}
so looking at your script, youre storing the ReferenceID variable as a TestCase property entitled ReferenceID
Then you're casting the ReferenceID to integer and adding a 1 and naming that variable as 'ReferenceID' as well
Then you're saying - if the updated 'ReferenceID' variable value is < 990000, then you want to set the TestCase property as the previously updated ReferenceID - is that right?
also - after the log.info line -you have a testRunner.gottoStepByName ("ReferenceID") - does this mean you've also got a teststep called ReferenceID? Don't really understand what you intend to do here
this is a bit confusing - I tend to separate my names as much as possible rather than re-use as this has caused me problems in the past
also - another point - setProperty syntax typically requires two values - e.g. setProperty("attributeName", attribute)
I haven't got an machine to debug at moment and I'm kinda guessing about what you need but try something like the following:
def ReferenceID = context.expand ('${#TestCase#ReferenceID}');
ReferenceID_incremented = ReferenceID.toInteger() + 1;
if (ReferenceID_incremented < 990000) {
testRunner.testCase.setPropertyValue("RefID_increment", ReferenceID_incremented);
log.info "RefID_increment"
}
try the above and see what you think - bit unsure if you need to cast the integer back to string - but it depends on what you want to do
If you can explain exactly what you want to do cos I didn't really understand the gotoStepByName command in relation to your description - that would help too
ta
Rich
- wiseAcre4 years agoOccasional Contributor
Rich,
Thank you for your response, the script below works in the Groovy editor, will update if/when I confirm it is incrementing the xml payload parameter.
Credit for this solution goes to Stackoverflow: https://stackoverflow.com/questions/55167067/soapui-how-to-increase-value-by-1-in-property-transfer-target// THIS WORKS INCREMENTING IN THE TEXT EDITOR
def ReferenceID = testRunner.testCase.getPropertyValue("ReferenceID");
ReferenceID = ReferenceID.toInteger() + 1;if (ReferenceID < 990000) {
testRunner.testCase.setPropertyValue("ReferenceID", ReferenceID.toString());
}log.info context.expand ('${#TestCase#ReferenceID}')
Steve
PS. I changed the name of the question to reflect the solution.
- richie4 years agoCommunity Hero
- wiseAcre4 years agoOccasional Contributor
Return of the MissingMethodException: This was the title of the initial post, but the problem / issue is Auto-incrementing a parameter in an xml payload. Here is working code for the Groovy editor, new to this script is addition of the XMLHolder library to update xml files:
import com.eviware.soapui.support.XmlHolder //assists transfer'g values to payload
def ReferenceID = testRunner.testCase.getPropertyValue("ReferenceID");
ReferenceID = ReferenceID.toInteger() + 1;if (ReferenceID < 990000) {
testRunner.testCase.setPropertyValue("ReferenceID", ReferenceID.toString());
}
log.info context.expand ('${#TestCase#ReferenceID}')// Create script to update the XML payload and auto-increment it for the next req
def RefID = testRunner.testCase.getPropertyValue("ReferenceId"); // Create object for incrementing payload value
testRunner.testCase.setPropertyValue("RefID", ${RefID.toInteger() + 1}); // NOW GETTING A 'MISSING METHOD EXCEPTION' error here
def xmlAdd = new XmlHolder(RefID) //Create object for xmlHolder classxmlAdd.setNodeValue("//std:FSMSHeader/std:ReferenceId",RefID); // xpath to target param
def newAddXml = xmlAdd.getXml(); // Update the param// Update the Custom Properties Values for the next request
testRunner.testCase["<myTestCase>"].testSteps["add"].setPropertyValue("ReferenceId",newAddXml)Any advice on how to clear the Missing Method Exception Above?
Also, obviously the payload.xml file has been updated as follows:
<v1:ReferenceId>${#TestCase#ReferenceID}</v1:ReferenceId>
Related Content
Recent Discussions
- 22 days ago