How to loop through results of individual test cases and recover testCase details
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
How to loop through results of individual test cases and recover testCase details
Hello everyone,
This will be my first post in the comunity and I've got to warn you, it's gonna be very oldscool
So here it goes. I recently "inherited an old SoapUI project which I am currently running in ReadyAPI and which need to modify.
I have a report generating script which is called from the teardown script of the other test cases via the following code:
testRunner.testCase.testSuite.project.testSuites["Library"].testCases["Reporting_Utility"].
testSteps["GenerateCSVReport"].run(testRunner, context);
On the other side, the report generate script is iterating through the test step results like so:
for(testCaseResult in runner.results())
{
def testSuite = testRunner.testCase.testSuite.name;
def testCase = testCaseResult.testCase.name //testRunner.testCase.name;
def testStep = stepResult.getTestStep();
def testStepName = testStep.name
reportFile.append('"' + testSuite + '",');
reportFile.append('"' + testCase + '",');
reportFile.append('"' + testStepName + '",');
reportFile.append('"' + status + '",' + "\n");
}
How can I loop through the results at test case level instead of the test step level?
I only need the overall fail/pass of each testcase.name + testsuite + status
Any help would be greatly appreciated
- Labels:
-
Function Tests
-
Scripting
-
SOAP
-
Test Results
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
As you have moved to ReadyAPI, could you take advantage of the Reporting features available instead of scripting it
There are a Preconfigured Report Styles, which include Data Export For Automation. This would give you a csv file with the test results for each test case.
https://support.smartbear.com/readyapi/docs/testing/reports/existing/export.html
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello @MConneely ,
Thanks for replying to the question. I am aware of the functionality but unfortunately it's not an option for my use case. My full requirement is the following: This project runs in Jenkins, and it has to return a .csv report which is sent from the pipeline to another app, at the same time a .pdf version of this report is sent by mail along with the Allure report (both mandatory). Now, the script runs fine, but the .csv and .pdf versions are very long as it shows all the test steps (around 400) and I have to reduce it's size by showing only test case results. Also, the app processing the .csv report has already been modified to expect test case results and process them accordingly, so no turning back at this point..
Any ideas/resources on how to do this?
Thank you in advance for the help 🙂
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi bucuali,
ive provided some options here, hopefully they will assist.
In the Teardown Script tab of each Test Suite, you could have a version of the following
for ( testCaseResult in runner.results )
{
// Get each test cases name from the suite
testCaseName = testCaseResult.getTestCase().name
// Get each test cases result
testCaseStatus = testCaseResult.getStatus()
//log the information
log.info testCaseName + " : " + testCaseStatus
}
If you wanted to move up a level and look at the results at a TestSuite level, you could put something at the Functional Test TearDown Script level
for ( testSuiteResult in runner.results )
{
log.info(testSuiteResult.getTestSuite().getLabel() + " : " + testSuiteResult.getStatus())
}
Some samples on our documentation should assist you
https://support.smartbear.com/readyapi/docs/testing/scripts/samples/index.html
https://support.smartbear.com/readyapi/docs/testing/scripts/samples/log.html
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
This is certainly going in the right direction, but I've hit a wall when trying to loop through each of the results in the test case creating the reports. I'm not sure what the best way to do it is, but something like:
for(testCaseName in testRunner.getResults())
{
def testSuite = testRunner.testCase.testSuite.name;
def testCase = testCaseResult.getTestCase().name
def status = testCaseResult.getStatus()
reportFile.append('"' + testSuite + '",');
reportFile.append('"' + testCase + '",');
reportFile.append('"' + status + '",' + "\n");
}
doesn't work. No errors, but no results either. Any Idea what I'm missing?
Many thanks again for all the help
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
are you confident that you are getting the correct information from the test suite/case/result? Even outputting the data using log.info? Are you adding this to the Teardown script?
If so, is the issue now around the reportFile object not getting populated? Is it the reportFile object read-in CSV file?
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Actually I think that is where the issue is coming from. By putting the script in the teardown section I'm executing after all the test cases, including the testcase which is actually supposed to receive the info and create the report (located in a different testsuite dedicated to that purpose). Now this report test case is being called from the teardown script of every other individual test case, so the execution timeline logic doesn't work.
I'm including a snapshot of how the testsuites and the testcases are ordered for a better understanding
I'm still experimenting with different ideas, but none seem to work so far
Thanks again for the help 🙂
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Happy New Year!
Any further thoughts on the matter?
Thank you in advance 🙂
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@bucuali wrote:Hello everyone,
This will be my first post in the comunity and I've got to warn you, it's gonna be very oldscool
So here it goes. I recently "inherited an old SoapUI project which I am currently running in ReadyAPI and which need to modify.
I have a report generating script which is called from the teardown script of the other test cases via the following code:
testRunner.testCase.testSuite.project.testSuites["Library"].testCases["Reporting_Utility"].
testSteps["GenerateCSVReport"].run(testRunner, context);
On the other side, the report generate script is iterating through the test step results like so:
for(testCaseResult in runner.results())
{def testSuite = testRunner.testCase.testSuite.name;
def testCase = testCaseResult.testCase.name //testRunner.testCase.name;
def testStep = stepResult.getTestStep();
def testStepName = testStep.namereportFile.append('"' + testSuite + '",');
reportFile.append('"' + testCase + '",');reportFile.append('"' + testStepName + '",');
reportFile.append('"' + status + '",' + "\n");
}
How can I loop through the results at test case level instead of the test step level?
I only need the overall fail/pass of each testcase.name + testsuite + status
Any help would be greatly appreciated
If so, is the issue now around the reportFile object not getting populated? Is it the reportFile object read-in CSV file?
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @Randall7205
Yes, that's the object. I's populated with individual test step data instead of overall test case (fail/pass) data.
