SoapUI条件跳转-包含关键字

问题描述

是否可以评估来自负载均衡器的错误响应以使用条件goto重播上一步?例如,请求可能会返回如下:

<html>
<head><title>502 Bad Gateway</title></head>
<body bgcolor="white">
<center><h1>502 Bad Gateway</h1></center>
</body>
</html>

在以上示例中无法使用名称空间。任何人都可以建议这是否可行,即通过搜索消息中的特定短语,而不必编写自定义的常规脚本?

解决方法

Groovy测试步骤可能是您唯一的选择。如果您在测试步骤中有断言检查有效响应,则收到502或其他错误将使您的测试用例短路,并且您将无法进入条件步骤。

以下是一个简单的Groovy测试步骤,它在测试步骤SOAP Request的响应中寻找“ 502 Bad Gateway”,然后再次执行该测试步骤:

def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def holder = groovyUtils.getXmlHolder( "SOAP Request#Response" )

// Check for a 502 Bad Gateway error 
if (holder["//text()[contains(.,'502 Bad Gateway')]"]) {

     log.info('Got 502 error... retrying the test step')
 
    def testCase = testRunner.testCase
    def testStep = testCase.getTestStepByName("SOAP Request");
    testStepContext = new com.eviware.soapui.impl.wsdl.testcase.WsdlTestRunContext(testStep);
    testStep.run(testRunner,testStepContext);

} else {

    log.info('Running normal assertions...')
}

但是,有一些想法需要重试:如果立即重试请求,您可能会得到相同的响应,因此可能需要延迟构建。而且,您应该放弃多少次重试?其他错误类型呢?使用Groovy测试步骤的优点之一是您可以调用许多处理重试的Java库,例如Guava

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...