如何在单个groovy脚本中访问所有soap请求

时间:2017-03-21 13:21:04

标签: web-services groovy soapui

我正在编写一个groovy脚本,只需一步即可测试我的所有服务。

我导入了WSDL,然后自动生成所有SOAP请求。

我希望减少逐个测试所有SOAP服务的手动工作。

所以,如果可能的话,我想通过groovy来做。

enter image description here

从此处的addressScript中 - 我想稍后访问所有测试用例中的所有SOAP请求。那么有可能通过上下文中的一些循环来实现它吗?下面是我尝试的示例代码。

我的主要动机是减少所有逐个测试所有SOAP请求的手动工作。

import org.apache.commons.httpclient.methods.PostMethod;
import org.w3c.dom.*;


    class Example {
       static void main(String[] args) {

    String serviceInput="";
    PostMethod post = new PostMethod(");
    post.setRequestHeader("Accept", "application/soap+xml,application/dime,multipart/related,text/*");
    post.setRequestHeader("SOAPAction", "");


    def req = context.testCase.getTestStepAt(context.currentStepIndex - 1).httpRequest.requestContent
    log.info req

    // here i want to access all the SOAP requests in loop , and to test all the services in sequence 

       }
    }

1 个答案:

答案 0 :(得分:1)

从您附加的图片中,您的案例中似乎正在使用SOAP个请求步骤。

这是Groovy Script

import com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStep
//Loop thru all the test cases of test suite
context.testCase.testSuite.testCaseList.each { testKase ->
    //Loop thru all the test steps of each test case
    testKase.testStepList.each { step ->
           //Check if the request type is SOAP     
        if (step instanceof WsdlTestRequestStep) {
            //Get the request of test step
            def stepRequest = step.getPropertyValue('Request')
            log.info "Request of step ${step.name} is :\n ${stepRequest}"
        } else {
            log.info 'Ignoring step as it is not SOAP request type step'
        }
    }
}

不确定,一旦收到请求,您想要做什么。无论如何,stepRequest变量将包含请求数据,现在只是记录,如上面的代码所示。