Forum Discussion

arunbharath's avatar
arunbharath
Contributor
5 years ago
Solved

How to get response error from run Test case step?

         In readyAPI, we have a step called 'Run TestCase" under add step. If I use that to call another testcase, is there any way to receive the response of called test case?. Because right now I'm just getting passed or failed. I'm not getting any errors from the called step.

 

       In short, When I run the "Run Testcase" pointing to test case A, if testcase A failed, how can I get the failure reason without going to testcase A

  • I'm not sure if this is what you are after, but I make extensive use of the "Run TestCase" test step. To help me debug, I always add the following to my "common" test cases tear down script:

     

    def logPrefix = testCase.getName() + ': '
    log.info (logPrefix + 'Number of results = ' + testRunner.getResults().size().toString())
    
    for(result in testRunner.getResults()){
    	if(result.getStatus().toString() != 'PASS' ){
    		def failedTestStepName = result.getTestStep().getName()
    		def logPrefixStep = logPrefix.trim() + failedTestStepName + ': '
    		
    		log.error(logPrefixStep + 'TestStep "' + failedTestStepName + '" finished with the status ' + result.getStatus().toString())
    
    		for(testProperty in testCase.getTestStepByName(failedTestStepName).getPropertyList()){
    			if(testProperty.isReadOnly()){
    				log.info(logPrefixStep + 'Output property: ' + testProperty.getName() + ' = ' + testProperty.getValue())
    			}else{
    				log.info(logPrefixStep + 'Input property: ' + testProperty.getName() + ' = ' + testProperty.getValue())
    			}
    		}
    		
    		for(message in result.getMessages()){
    			log.error(logPrefixStep + 'Error message: ' + message) 
    		}
    	}
    }

    Is this what you are after?

     

     

5 Replies

  • Radford's avatar
    Radford
    Super Contributor

    I'm not sure if this is what you are after, but I make extensive use of the "Run TestCase" test step. To help me debug, I always add the following to my "common" test cases tear down script:

     

    def logPrefix = testCase.getName() + ': '
    log.info (logPrefix + 'Number of results = ' + testRunner.getResults().size().toString())
    
    for(result in testRunner.getResults()){
    	if(result.getStatus().toString() != 'PASS' ){
    		def failedTestStepName = result.getTestStep().getName()
    		def logPrefixStep = logPrefix.trim() + failedTestStepName + ': '
    		
    		log.error(logPrefixStep + 'TestStep "' + failedTestStepName + '" finished with the status ' + result.getStatus().toString())
    
    		for(testProperty in testCase.getTestStepByName(failedTestStepName).getPropertyList()){
    			if(testProperty.isReadOnly()){
    				log.info(logPrefixStep + 'Output property: ' + testProperty.getName() + ' = ' + testProperty.getValue())
    			}else{
    				log.info(logPrefixStep + 'Input property: ' + testProperty.getName() + ' = ' + testProperty.getValue())
    			}
    		}
    		
    		for(message in result.getMessages()){
    			log.error(logPrefixStep + 'Error message: ' + message) 
    		}
    	}
    }

    Is this what you are after?

     

     

    • richie's avatar
      richie
      Community Hero

      Hey Radford 

       

      I've just 'borrowed' your script - cheers fella - very handy! :)

       

      nice one

       

      rich

       

      • Radford's avatar
        Radford
        Super Contributor

        richie glad you found it useful.

         

        Just to mention in my "real world" testing scenarios, I actually put the script in a "TestRunListener.afterRun" event, that way I just have a single copy of the script that runs for all test cases (you can always add a filter to the event if you want to limit the number of tets cases it runs against).

    • arunbharath's avatar
      arunbharath
      Contributor

      Thanks Radford, I have implemented the groovy script in the TestRunListener.afterStep, After the run where I can find the logs from the script?