我正在编写一个groovy脚本,只需一步即可测试我的所有服务。
我导入了WSDL,然后自动生成所有SOAP请求。
我希望减少逐个测试所有SOAP服务的手动工作。
所以,如果可能的话,我想通过groovy来做。
从此处的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
}
}
答案 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
变量将包含请求数据,现在只是记录,如上面的代码所示。