Forum Discussion

678's avatar
678
Regular Contributor
6 years ago
Solved

how to find teststep disabled or enabled

can any one share a groovy to execute this    how to find teststep disabled or enabled and if disabled - make it enable or if enabled - make it disable     appreacte the help     
  • Radford's avatar
    6 years ago

    This is a Groovy Script that I have set as the TestRunListener.beforeRun event script. I use it to check a lot of common mistakes I make, but you can see how it's based around looping through each of the test steps and initially checking if it is disabled or not.

     

    import com.eviware.soapui.impl.wsdl.teststeps.assertions.basic.*
    import com.eviware.soapui.impl.wsdl.teststeps.assertions.http.*
    import com.eviware.soapui.impl.wsdl.teststeps.assertions.jdbc.*
    import com.eviware.soapui.impl.wsdl.teststeps.assertions.jms.*
    import com.eviware.soapui.impl.wsdl.teststeps.assertions.soap.*
    import com.eviware.soapui.impl.wsdl.teststeps.assertions.GroupAssertion
    import com.eviware.soapui.impl.wsdl.teststeps.assertions.MessageContentAssertion
    import com.eviware.soapui.impl.wsdl.teststeps.assertions.ProXPathContainsAssertion
    import com.eviware.soapui.impl.wsdl.teststeps.assertions.ProGroovyScriptAssertion
    import com.eviware.soapui.impl.wsdl.teststeps.ProJdbcRequestTestStep
    
    def logPrefix = 'TestRunListener.beforeRun:' + testRunner.getTestCase().getName() + ": "
    
    testRunner.getTestCase().getTestSteps().each{testStepName, testStep  ->
    
        logPrefix = 'TestRunListener.beforeRun:' + testRunner.getTestCase().getName() + ':' + testStepName + ": "
    
        // Only check enabled test steps.
        if(!testStep.isDisabled()){
    
            // Test step specific checks.
            if(testStep in ProJdbcRequestTestStep){
                if(testStep.getAssertionList().find{ jdbcAssertion -> jdbcAssertion in JdbcStatusAssertion } == null){
                    log.warn(logPrefix + 'This is a JDBC Test Step, but does not have a JDBC Status assertion.')
                }
            }
    
            if (testStep in com.eviware.soapui.model.testsuite.Assertable){
                testStep.getAssertionList().each{ testAssertion ->
    
                    // Generic assertion checks
                    if(testAssertion.isDisabled()){
                        log.warn(logPrefix + 'Assertion "' + testAssertion.getName() + '" is disabled.')
                    }
    
                    // Specific assertion type checks
                    switch (testAssertion) {
    
                        case ProXPathContainsAssertion:
                        case XPathContainsAssertion:
    
                            if(!testAssertion.getPath().trim()){
                                log.warn(logPrefix + 'Assertion "' + testAssertion.getName() + '" XPath Expression is blank.')
                            }
    
                            if(!testAssertion.getExpectedContent().trim()){
                                log.warn(logPrefix + 'Assertion "' + testAssertion.getName() + '" Expected Result is blank.')
                            }
    
                            if(testAssertion.getName().equals('XPath Match')){
                                log.warn(logPrefix + 'Assertion "' + testAssertion.getName() + '" still has the default name.')
                            }
    
                            break
    
                        case ProGroovyScriptAssertion:
                        case GroovyScriptAssertion:
    
                            if(!testAssertion.getScriptText().trim()){
                                log.warn(logPrefix + 'Assertion "' + testAssertion.getName() + '" Script is blank.')
                            }
    
                            if(testAssertion.getName().equals('Script Assertion')){
                                log.warn(logPrefix + 'Assertion "' + testAssertion.getName() + '" still has the default name.')
                            }
    
                            break
                    }
                }
            }
        }
    }

     

    Looking at the WsdlTestStep java docs, I see that there is a "setDisabled" method. I have never used this but perhaps you might be able to do something like:

     

    def logPrefix = 'TestRunListener.beforeRun:' + testRunner.getTestCase().getName() + ": "
    
    testRunner.getTestCase().getTestSteps().each{testStepName, testStep  ->
    
    	log.info(logPrefix + 'Initially test step ' + testStep.getName() + ' isDisabled() = ' + testStep.isDisabled())
    	
    // Flip the disabled status of the test step if(testStep.isDisabled()){ testStep.setDisabled(false) }else{ testStep.setDisabled(true) } log.info(logPrefix + 'Updated test step ' + testStep.getName() + ' isDisabled() = ' + testStep.isDisabled()) }

     

    (Edited response to include tested code sample to answer actual question)