Forum Discussion

API_Guy's avatar
API_Guy
Occasional Contributor
5 years ago

Retry a test case 3 times before it marks failed

Hi There,

I am very new to SOAP UI Pro and I have test cases that has 22 test steps in a single test case, starting from login to book a ticket in an application. 

I am trying to make this test dynamic such as if it encounters any failure in any of the test steps then the test case should be triggered again 3 times before it markes failed.

So, I want to re-run the test case automatically for at least 3 times if it encounters any errors in any steps.

 

Can anyone please help me with how I can achieve it?

 

Thanks in advance!
Appreciate your help!!

 

  • Simple solution:

    Retrieve target test case running status, if failed, then rerun.

     

    import com.eviware.soapui.support.types.StringToObjectMap
    
    //
    def testcase = testRunner.testCase.testSuite.testCases["TargetTestCaseName"]
    def testresult = testcase.run(new StringToObjectMap(), false)
    
    // loop
    for (i in 0..<3) {
        if (testresult.status.toString() == 'FAIL') {
            testresult = testcase.run(new StringToObjectMap(), false)
        } else {
            break
        }  
    }
    
  • API_Guy : You can achieve this by writing your custom groovy code to achieve this.

     

    Create a Controller Test Case from where run the desired testcase.

    At the end check the status of test case if it is fail then run the test case desired number of times.

    • API_Guy's avatar
      API_Guy
      Occasional Contributor

      Thanks HimanshuTayal for your response. But in that case, my report will also count the controller as a separate test case, right? That's what I don't want. The test case count in my report should be unchanged.

       

      Also, can you help with how I can achieve that controller using groovy? Any snippet would be helpful.

       

      Thanks much! Appreciate your help!

      • aaronpliu's avatar
        aaronpliu
        Frequent Contributor

        Simple solution:

        Retrieve target test case running status, if failed, then rerun.

         

        import com.eviware.soapui.support.types.StringToObjectMap
        
        //
        def testcase = testRunner.testCase.testSuite.testCases["TargetTestCaseName"]
        def testresult = testcase.run(new StringToObjectMap(), false)
        
        // loop
        for (i in 0..<3) {
            if (testresult.status.toString() == 'FAIL') {
                testresult = testcase.run(new StringToObjectMap(), false)
            } else {
                break
            }  
        }