【问题标题】:soapUI groovy script setting test step status to test step with different behavior in script/test suit windowsoapUI groovy 脚本设置测试步骤状态以在脚本/测试套装窗口中以不同行为测试步骤
【发布时间】:2021-03-09 11:50:38
【问题描述】:

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

这部分看起来不错。问题是,使用我拥有的代码,在 groovy 脚本中,当我单击绿色按钮运行脚本时,它给了我消息:“java.lang.NullPointerException: Cannot invoke method setStatus() on null object error at line 17 ”。并且脚本的颜色保持红色。

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

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

代码:

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% 我上面说的绿色是真的绿色还是黄色,而蓝色可能是粉红色...

感谢您的帮助!

【问题讨论】:

    标签: groovy soapui test-suite


    【解决方案1】:

    找到了解决办法。

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

    不需要exampleResultmyStep

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多