Groovy script to run a Teststep doesn't fail when the test Step fails
SOLVED- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Groovy script to run a Teststep doesn't fail when the test Step fails
Instead of copying and pasting test steps that I am using over and over in other test cases i decided to use a grovvy step to call the test step. When one of the assertions fail on the step the grovvy step is not failed but instead the test continues onto the next step. I am at a loss for how to get the step to fail when the test step called has a failure in one or more of the assertions. Any help would be appreciated.
Here is the groovy step I am using:
//Generate Authentication Token
// Run the test step
def auth = testRunner.testCase.testSuite.getTestCaseByName("followup_email - Valid English First").getTestStepByName("Generate Auth Token")
//Execute Test Step
auth.run(testRunner, context)
//CHECK FAILED COMMUNICATIONS
// Run the test step
def tStep = testRunner.testCase.testSuite.getTestCaseByName("followup_email - to: Field is Missing").getTestStepByName("Check for Failed Communications")
//Execute Test Step
tStep.run(testRunner, context)
//Results
log.info(tStep.getAssertionStatus())
log.info(tStep.getAssertableContentAsXml())
When log.info(tStep.getAssertionStatus()) comes back FAIL the groovy step is not failed
Solved! Go to Solution.
- Labels:
-
Assertions
-
Data-Driven Testing
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Regards,
Rao.
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@nemowbray : In order to achieve this you need to assert it in the groovy script which is calling that common Test Step:
def result = testRunner.testCase.testSteps["TEST_STEP_NAME"].run(testRunner, context).getStatus().toString()
if ( result == "OK")
testRunner.pass("Test Script passed.")
else
testRunner.fail("Test Script failed.")
Click "Accept as Solution" if my answer has helped,
Remember to give "Kudos" 🙂 ↓↓↓↓↓
Thanks and Regards,
Himanshu Tayal
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@HimanshuTayal I added an assert but still the test would not fail, but using your solution has worked! Seems i was overthinking it. Thanks!
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @HimanshuTayal,
Seems i jumped the gun as I thought it was working but it wasn't. Its failing every case even though the test passes.
//CHECK FAILED COMMUNICATIONS
// Run the test step
def tStep = testRunner.testCase.testSuite.getTestCaseByName("followup_email - Valid English First").getTestStepByName("Check for Failed Communications")
//Execute Test Step
tStep.run(testRunner, context).getStatus().toString()
//Results
log.info(tStep.getAssertionStatus())
log.info(tStep.getAssertableContentAsXml())
//ASSERT
def result = tStep.getAssertionStatus()
log.info(result)
if (result == "PASS")
testRunner.pass("Test Script passed.")
else
testRunner.fail("Test Script failed.")
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@nemowbray : try with
if(result.toString() == "PASS"){
//your logic
}
else{
//your logic
}
Click "Accept as Solution" if my answer has helped,
Remember to give "Kudos" 🙂 ↓↓↓↓↓
Thanks and Regards,
Himanshu Tayal
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
All you need is just a line in order to check if the particular test step us passed or not.
Rremove every thing after line 10 of your script and add below line.
Assuming that the expected result is pass.
assert tStep.run(testRunner, context).status.toString() in ['OK', 'UNKNOWN'], ' Test step status does not match with the expected value'
In case you are expecting tStep to be failed, the use below assertion
assert tStep.run(testRunner, context).status.toString() == 'FAILED', 'Test step status does not match the expected result'
Regards,
Rao.
