根据先前请求的结果有条件地执行特定测试步骤

时间:2017-11-22 19:04:25

标签: groovy soapui

我使用SOAP UI Free。

我想验证先前的响应是否返回number(id)并有条件地运行特定的teststep。 我的伪代码如下。如何使用groovy实现此操作?

如何获得回复并验证是否包含数字并返回200?

如何提取此编号并将其用作下一个请求中的参数

如何判断回复是否正确?

响应样本(200):

523455

响应示例(404):

{
   "category": "BUSINESS",
   "code": "NOT_FOUND",
   "description":"Account not found",
   "httpStatus": 404
}

1.step GET accountId

2.step GROOVY

if(accountId is number and returns 200){
    extract this number from json
        run testRunner.testStep("removeAccount) for extracted number
            if(response.equals("true"){

               testRunner.runTestStep("createNewAccount")
      }
}

1 个答案:

答案 0 :(得分:0)

1 - 使用属性转移步骤:

  • 使用JSONPath定位id(应该类似于“$ .id”)
  • 将“在缺失的来源上设置null”设置为true
  • 将其存储在testCase的自定义属性中(例如“curId”)

此外,如果你想要Http状态代码,你应该用另一个自定义变量将groovy脚本存储起来,使用类似这样的东西:

curHeaders = testRunner.testCase.testSteps["Get token"].testRequest.response.getResponseHeaders()

testRunner.testCase.setPropertyValue("http status", curHeaders["#status#"][0])

2 - 使用groovy脚本步骤: 检索上面的变量:

curId = testRunner.testCase.getPropertyValue("curId")
curHttpStatus = testRunner.testCase.getPropertyValue("http status")

如果为true,则测试这些变量并运行测试步骤“removeAccount”:

if(curId && (curHttpStatus == 'HTTP/1.1 200 OK'))
{
     removeActionTestStep = testRunner.testSteps["removeAccount"]
     removeActionTestStep.run(null, false)

}

注意:removeAccount测试步骤应该引用curId自定义变量(例如使用“$ {#TestCase #curId}),因此它使用此id运行

您可以使用jsonSlurper

添加删除后的createAccount部分
removeActionResultJSON = context.expand('${removeAccount#Response}')
removeActionResultJSONSlurper = new groovy.json.JsonSlurper().parseText(removeActionResultJSON )

然后定位你的响应使其等于true的位置,然后使用另一个if-run语句,如下所示。

希望这有帮助,

托马斯