Ask a Question

How to execute same test step again until the condition is satisfied

LK
New Contributor

How to execute same test step again until the condition is satisfied

I have a situation where I need to check a field in the API response. It changes after every 5 minutes, so need to trigger the API, check the response , if it has not reached the expected value, again check it after 5 minutes. Is there a way to do it? I tried it through data source loop, with property wait, but it stops the execution on the first failure and does not trigger the api again. Any help would be highly appreciated.

3 REPLIES 3
KarelHusa
Champion Level 3

@LK,

you can either use the Conditional Goto Test step or Groovy scripting.

 

There's a comprehensive article on controlling the test case flow using both these approaches in SoapUI/ReadyAPI docs.

 

Best regards,

Karel

 

Karel@apimate.eu
https://apimate.eu
LK
New Contributor

Hi Karel, thanks for your reply. I tried using groovy script and I am getting this error- groovy.lang.MissingPropertyException: No such property: java for class: Script4
error at line: 7

 

Scrpit:

import groovy.json.JsonSlurper

//def loopProperties = testRunner.runTestStepByName("REST Request")

//def count =Integer.parseInt (testRunner.testCase.testSuite.getPropertyValue( "availableEvStationCount" ))

def availableEvStationCount= testRunner.testCase.getPropertyValue( java.lang.string("availableEvStationCount") )
testRunner.testCase.setPropertyValue("availableEvStationCount", "availableEvStationCount" )
//Integer count = scount as Integer
if (availableEvStationCount<2)
{
Thread.sleep(5000)
} else {

testRunner.runTestStepByName("REST Request")
}

 

Could you please help.

KarelHusa
Champion Level 3

@LK,

you can:

  1. call your API
  2. save the result into a property
  3. execute the Groovy script

See the screenshot below.

 

GroovyLooping-2022-07-22_143431.jpg

 

In the Groovy script, I would suggest utilizing testRunner.gotoStepByName( "RESTRequest"):

 

// The result is saved in a property value as string, transform into an integer
def result = Integer.parseInt(testRunner.testCase.getPropertyValue("result"))

if (result < 50) {
sleep(1000)
testRunner.gotoStepByName("RESTRequest")
}

 

If the result is 50 or higher, the loop is finished, and your test case continues.

 

Best regards,

Karel

 

Karel@apimate.eu
https://apimate.eu
cancel
Showing results for 
Search instead for 
Did you mean: