当前位置: 首页 > 知识库问答 >
问题:

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

苗征
2023-03-14

我使用SOAP UI Free。

我想验证先前的响应是否返回数字(id ),并有条件地运行特定的测试步骤。我下面的伪代码。如何使用groovy实现这个动作?

如何获取响应并验证是否包含数字并返回 200?

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

如何比较响应是否属实?

响应样本 (200):

523455

响应样本 (404):

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

1.步骤获取帐户ID

2.阶梯槽

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个答案

韶英达
2023-03-14

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")

如果为真,则测试这些变量并运行测试步骤“

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 )

然后将目标指向您的响应将使其等于真的地方,然后使用另一个if-run语句,如下所示。

希望这有帮助,

托马斯

 类似资料:
  • ExecutionCondition defines the Extension API for programmatic, conditional test execution. An ExecutionCondition is evaluated for each container (e.g., a test class) to determine if all the tests it c

  • 问题内容: 我有一张地图,如下所示: 如您所见,将有一个名为split的最终常量,其值为40 我必须实现逻辑,例如,如果映射的值达到40,那么从计算开始的映射的第一个键以及恰好达到40的键也将被选择为min和max,如上所述。 。 除此之外,如果总和超过40,则需要格外小心。如果是,我们必须忽略它,并且在最小值和最大值相等的情况下,将先前的值本身作为最小值和最大值。 请建议我如何使用Java和。乡

  • 首先,请看一下代码。 对于优先级和步骤,我给出了onChange事件,因为它是一个选择表单。 此函数用于POST请求。我将每个编辑的数据发送到DB。 但是数据对象,您可以看到updateCols:[]。 在这个数组中,我必须放置已更改的属性。 例如,如果我更改标题、说明和开始日期,我必须将数组更改为 我觉得不可能每次都能查到这张申请表,所以我觉得这张申请表有问题。 有人可能只编辑标题,有人可能编辑

  • 我想避免的是JMeter的常规工作方式,即每个线程基本上一个接一个地触发一个请求。 背景:我们已经有了一个工具来创建这种剧本,它是一种模拟用户行为的非常现实的方式。我们现在正在评估是否可以使用JMeter来执行它们。

  • 问题内容: 有没有一种方法可以对 field1 = x* 和 field2 = y的文档执行删除操作 ? *** 我看到了删除功能,但没有附带。如果使用事务,则存在get和delete,但get似乎不接受“ where”子句。 我希望我在文档中缺少一些内容。 谢谢 问题答案: 为此,您需要先创建所需的查询,然后才使用如下方法:

  • 我正在做一个Spring批处理工作,它包含几个步骤(超过10个)。 谢谢你的回答。