繁体   English   中英

soapUI groovy 脚本设置测试步骤状态以测试脚本/测试套装中具有不同行为的步骤 window

[英]soapUI groovy script setting test step status to test step with different behavior in script/test suit window

我创建了一个 testSuit,并且有一些测试步骤。 目标是逐个运行测试步骤,并将状态设置为 OK 或 FAILED,为此我获得了 httpStatus 代码并将其设置为 FAILED 或 OK。

这部分似乎很好。 问题是,使用我拥有的代码,在 groovy 脚本中,当我单击绿色按钮运行脚本时,它给了我消息:“java.lang.NullPointerException:无法在 null ZA8CFFDE633117B4662ACZ96 行调用方法 setStatus() ”。 并且脚本的颜色保持红色。

但是,如果我单击“测试步骤”,将出现一个小的 window 和测试步骤,groovy 脚本等...如果我右键单击 groovy 脚本并选择“从这里测试”脚本,我在脚本中运行会变成绿色或红色,具体取决于它是失败还是通过,groovy 脚本会变成蓝色。

所以...我不明白发生了什么...打开“Groovy 脚本”window 并从那里运行它,然后打开“测试步骤”window 并从那里运行脚本有什么区别?

编码:

import com.eviware.soapui.model.testsuite.TestStepResult.TestStepStatus
def example = testRunner.runTestStepByName("example");
def myStep = context.testCase.getTestStepByName("example")
def exampleResult = testRunner.results.find { it.testStep.is(myStep) }
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def httpResponseHeaders = context.testCase.testSteps["example"].testRequest.response.responseHeaders
def httpStatus = httpResponseHeaders["#status#"]
def httpStatusCode = (httpStatus =~ "[1-5]\\d\\d")[0]

log.info("HTTP status code: " + httpStatusCode)

if (httpStatusCode != "200"){
    testRunner.fail("failed");
    exampleResult.setStatus(TestStepStatus.FAILED);
} else {
    log.info("passed");
    exampleResult.setStatus(TestStepStatus.OK);
}

注意:我是色盲,所以不确定 100% 我上面说的绿色是真的绿色还是黄色,而蓝色可能是粉红色......

谢谢您的帮助!

找到了解决方案。

我的代码中不需要某些东西。

exampleResultmyStep

我可以只使用example.setStatus(TestStepStatus.OK) 之后按预期工作。

Re So...我不明白发生了什么...打开“Groovy Script”window 并从那里运行它,然后打开“Test Steps”window 并从那里运行脚本有什么区别? 我不清楚您所指的脚本是测试步骤上的 Groovy 脚本断言还是测试用例中的 Groovy 脚本步骤。 无论哪种方式,都需要先运行该步骤,然后才能从该步骤的响应中获取详细信息。

我知道你已经回答了你的问题,但我会继续努力......

当您创建一个测试步骤并运行它时,它们往往会默认通过。 然后用户决定如何定义什么是通过或失败。 这可以纯粹基于 200 响应,例如您正在执行的操作,或者通过创建针对响应的断言以确保 API 返回预期值来进行更复杂的操作。

我正在努力,因为 SoapUI 提供了您想要的“开箱即用”的东西,而无需借助 groovy 脚本。 如果您“打开”感兴趣的步骤,您将看到“断言”部分。 从这里您可以添加任意数量的不同类型的断言。 其中一个是“有效的 HTTP 状态码”,如果您是 select 这个,您可以输入该步骤的有效状态码。 例如 200。当您运行测试用例时,SoapUI 将根据断言显示结果。 如果这样做,请尝试将 500 作为有效状态代码,然后运行。 然后,您的所有测试都将失败。

如果此答案对您遇到的问题没有帮助或不适用,请告诉我,我将删除它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM