Forum Discussion

Philippe_Lebacq's avatar
Philippe_Lebacq
Contributor
16 years ago

How to get the "pass" / "fail" status from testcases/suites ?

Hi
I'm not interested in the full result of the request but only whether it passed or failed, is there a property (or other way) that can be used to retrieved this info ?

Philippe. 

6 Replies

  • omatzura's avatar
    omatzura
    Super Contributor
    Hi,

    check the status property of the TestStepResult object created for the execution of the corresponding TestStep, available from testRunner.results array

    regards!

    /Ole
    eviware.com
  • Hi
    I tried, cf groovy sample posted in the web site, but got this error?
    Philippe.

    Mon Dec 29 12:00:20 CET 2008:ERROR:An error occured [startup failed, Script2.groovy: 1: unable to resolve class TestRunner.Status
    @ line 1, column 1.org.codehaus.groovy.syntax.SyntaxException: unable to resolve class TestRunner.Status
    @ line 1, column 1.
    at org.codehaus.groovy.ast.ClassCodeVisitorSupport.addError(ClassCodeVisitorSupport.java:113)
    at org.codehaus.groovy.control.ResolveVisitor.resolveOrFail(ResolveVisitor.java:205)
    at org.codehaus.groovy.control.ResolveVisitor.resolveOrFail(ResolveVisitor.java:215)
    at org.codehaus.groovy.control.ResolveVisitor.visitForLoop(ResolveVisitor.java:1014)
    at org.codehaus.groovy.ast.stmt.ForStatement.visit(ForStatement.java:47)
    at org.codehaus.groovy.ast.CodeVisitorSupport.visitBlockStatement(CodeVisitorSupport.java:37)
    at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitBlockStatement(ClassCodeVisitorSupport.java:129)
    at org.codehaus.groovy.control.ResolveVisitor.visitBlockStatement(ResolveVisitor.java:1021)
    at org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:52)
    at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClassCodeContainer(ClassCodeVisitorSupport.java:73)
    at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructorOrMethod(ClassCodeVisitorSupport.java:80)
    at org.codehaus.groovy.ast.ClassCodeExpressionTransformer.visitConstructorOrMethod(ClassCodeExpressionTransformer.java:53)
    at org.codehaus.groovy.control.ResolveVisitor.visitConstructorOrMethod(ResolveVisitor.java:166)
    at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitMethod(ClassCodeVisitorSupport.java:88)
    at org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:907)
    at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:48)
    at org.codehaus.groovy.control.ResolveVisitor.visitClass(ResolveVisitor.java:1000)
    at org.codehaus.groovy.control.ResolveVisitor.startResolving(ResolveVisitor.java:141)
    at org.codehaus.groovy.control.CompilationUnit$5.call(CompilationUnit.java:527)
    at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:772)
    at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:438)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:281)
    at groovy.lang.GroovyShell.parseClass(GroovyShell.java:572)
    at groovy.lang.GroovyShell.parse(GroovyShell.java:584)
    at groovy.lang.GroovyShell.parse(GroovyShell.java:564)
    at groovy.lang.GroovyShell.parse(GroovyShell.java:603)
    at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.compile(SoapUIGroovyScriptEngine.java:85)
    at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.run(SoapUIGroovyScriptEngine.java:56)
    at com.eviware.soapui.impl.wsdl.teststeps.WsdlGroovyScriptTestStep.run(WsdlGroovyScriptTestStep.java:148)
    at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.runTestStep(WsdlTestCaseRunner.java:266)
    at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.run(WsdlTestCaseRunner.java:175)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    Script2.groovy: 2: unable to resolve class TestRunner.Status
    @ line 2, column 24.org.codehaus.groovy.syntax.SyntaxException: unable to resolve class TestRunner.Status
    @ line 2, column 24.
    at org.codehaus.groovy.ast.ClassCodeVisitorSupport.addError(ClassCodeVisitorSupport.java:113)
    at org.codehaus.groovy.control.ResolveVisitor.resolveOrFail(ResolveVisitor.java:205)
    at org.codehaus.groovy.control.ResolveVisitor.resolveOrFail(ResolveVisitor.java:215)
    at org.codehaus.groovy.control.ResolveVisitor.transformVariableExpression(ResolveVisitor.java:831)
    at org.codehaus.groovy.control.ResolveVisitor.transform(ResolveVisitor.java:637)
    at org.codehaus.groovy.ast.expr.Expression.transformExpressions(Expression.java:49)
    at org.codehaus.groovy.ast.expr.ArgumentListExpression.transformExpression(ArgumentListExpression.java:67)
    at org.codehaus.groovy.control.ResolveVisitor.transform(ResolveVisitor.java:654)
    at org.codehaus.groovy.control.ResolveVisitor.transformMethodCallExpression(ResolveVisitor.java:892)
    at org.codehaus.groovy.control.ResolveVisitor.transform(ResolveVisitor.java:645)
    at org.codehaus.groovy.ast.ClassCodeExpressionTransformer.visitExpressionStatement(ClassCodeExpressionTransformer.java:148)
    at org.codehaus.groovy.ast.stmt.ExpressionStatement.visit(ExpressionStatement.java:40)
    at org.codehaus.groovy.ast.CodeVisitorSupport.visitForLoop(CodeVisitorSupport.java:43)
    at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitForLoop(ClassCodeVisitorSupport.java:164)
    at org.codehaus.groovy.ast.ClassCodeExpressionTransformer.visitForLoop(ClassCodeExpressionTransformer.java:130)
    at org.codehaus.groovy.control.ResolveVisitor.visitForLoop(ResolveVisitor.java:1015)
    at org.codehaus.groovy.ast.stmt.ForStatement.visit(ForStatement.java:47)
    at org.codehaus.groovy.ast.CodeVisitorSupport.visitBlockStatement(CodeVisitorSupport.java:37)
    at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitBlockStatement(ClassCodeVisitorSupport.java:129)
    at org.codehaus.groovy.control.ResolveVisitor.visitBlockStatement(ResolveVisitor.java:1021)
    at org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:52)
    at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClassCodeContainer(ClassCodeVisitorSupport.java:73)
    at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructorOrMethod(ClassCodeVisitorSupport.java:80)
    at org.codehaus.groovy.ast.ClassCodeExpressionTransformer.visitConstructorOrMethod(ClassCodeExpressionTransformer.java:53)
    at org.codehaus.groovy.control.ResolveVisitor.visitConstructorOrMethod(ResolveVisitor.java:166)
    at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitMethod(ClassCodeVisitorSupport.java:88)
    at org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:907)
    at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:48)
    at org.codehaus.groovy.control.ResolveVisitor.visitClass(ResolveVisitor.java:1000)
    at org.codehaus.groovy.control.ResolveVisitor.startResolving(ResolveVisitor.java:141)
    at org.codehaus.groovy.control.CompilationUnit$5.call(CompilationUnit.java:527)
    at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:772)
    at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:438)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:281)
    at groovy.lang.GroovyShell.parseClass(GroovyShell.java:572)
    at groovy.lang.GroovyShell.parse(GroovyShell.java:584)
    at groovy.lang.GroovyShell.parse(GroovyShell.java:564)
    at groovy.lang.GroovyShell.parse(GroovyShell.java:603)
    at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.compile(SoapUIGroovyScriptEngine.java:85)
    at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.run(SoapUIGroovyScriptEngine.java:56)
    at com.eviware.soapui.impl.wsdl.teststeps.WsdlGroovyScriptTestStep.run(WsdlGroovyScriptTestStep.java:148)
    at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.runTestStep(WsdlTestCaseRunner.java:266)
    at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.run(WsdlTestCaseRunner.java:175)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

    2 errors
    ], see error log for details
  • omatzura's avatar
    omatzura
    Super Contributor
    Hi!

    looks like you need to add an import for TestRunner.Status;

    import com.eviware.soapui.model.testsuite.TestRunner.Status


    regards,

    /Ole
    eviware.com
  • Kenzo's avatar
    Kenzo
    Occasional Contributor
    phillipe can you post the link where u got the groovy sample??

    thx
  • I'm afraid I did not save that info.
    I found using the search.
    Here's my script. I put it as teardown script of the calling test case. steplist 3 & 4 are the 2 steps calling my 'functional' testcases.

    import com.eviware.soapui.SoapUI;
    import com.eviware.soapui.model.testsuite.TestRunContext;
    import com.eviware.soapui.model.testsuite.TestRunner;
    import com.eviware.soapui.model.testsuite.TestRunner.Status
    import com.eviware.soapui.model.testsuite.TestStepResult;
     
    def testcase = testRunner.getTestCase();
    def steplist = testcase.getTestStepList() ;
    def a3 = steplist[3];
    def a4 = steplist[4];
    def teststatus = testRunner.getStatus();
    //
    def step_a = "\n";
    def i = 0;
    for( r in testRunner.results )
    {  i++;
      step_a = step_a + i + " - '" + r.testStep.name + "' finished with status " + r.status + "\n" ;
      }
    // check the status property of the TestStepResult object created for the execution of the corresponding TestStep, available from testRunner.results array
    // list possible status values :  def step_a3 = com.eviware.soapui.model.testsuite.TestStepResult.TestStepStatus.values();

    def P1 = testRunner.testCase.getTestStepByName( "Properties" );

    com.eviware.soapui.support.UISupport.showInfoMessage(
      "Run testcase = " + testcase.name + "\n"
      + "Functional steps = " + a3.name + "  +  " +  a4.name  + "\n"
        + " --> " + "Testcase run status = " + teststatus + "\n"
      + "Test steps run status : " + step_a + "\n" +
      "Run parameters : Env= " + P1.getPropertyValue( "testenv" ) + "\n"
      );