在执行soap请求测试步骤(在测试套件 - >测试用例下)之后通过testRunner.runTestStepByName(" Soap Request Name ")执行SoapUI
在soap请求执行testRunner.getStatus()返回RUNNING状态之后等待10秒.下面是groovy脚本(在同一测试套件下 - >测试用例)
import groovy.sql.Sql;
import com.eviware.soapui.model.testsuite.TestRunner.Status
testRunner.runTestStepByName("GetCitiesByCountry - Request 1")
sleep(10000)
log.info( "...${testRunner.getStatus()}...")
while ( testRunner.getStatus() == Status.RUNNING ) {
log.info(testRunner.getStatus())
}
Run Code Online (Sandbox Code Playgroud)
输出如下
Wed Apr 17 21:06:22 IST 2013:INFO:RUNNING
Wed Apr 17 21:06:22 IST 2013:INFO:RUNNING
Wed Apr 17 21:06:22 IST 2013:INFO:RUNNING
Wed Apr 17 21:06:22 IST 2013:INFO:RUNNING
Wed Apr 17 21:06:22 IST 2013:INFO:RUNNING
Wed Apr 17 21:06:22 IST 2013:INFO:RUNNING
.
.
continuing for infinite time...
Run Code Online (Sandbox Code Playgroud)
理想情况下, 执行上述测试步骤后应返回FINISHED ,
高级感谢您对此提供的任何帮助
这听起来合乎逻辑,只要你在循环中,测试就是"正在运行".您可以通过以下方式获取状态:
import com.eviware.soapui.model.testsuite.TestStepResult.TestStepStatus
myTestStepResult = testRunner.runTestStepByName("GetCitiesByCountry - Request 1")
myStatus = myTestStepResult.getStatus()
if (myStatus == TestStepStatus.OK)
log.info "The step status is: " + myStatus.toString()
else
log.error "The step status is: " + myStatus.toString()
Run Code Online (Sandbox Code Playgroud)
此外,由于对runTestStepByName的调用是同步的,因此没有'running'状态,只有'CANCELED','FAILED','OK'或'UNKNOWN'.