【发布时间】:2016-10-29 23:16:40
【问题描述】:
我对 Groovy 和 SoapUI 测试套件还很陌生,当我尝试执行 Conditional Goto 时遇到错误。问题是,我有几个回答 JSON 字符串的 REST 服务,我想创建一个 TestSuite,只有当服务 A 在其答案上返回特定代码时,服务 B 才会在其中执行。所以,为了让事情更清楚:
服务 A 返回类似
{
"parentObject": {
"myCode": "0",
"severity": "INFO"
},
"message": "operation successfull"
}
如果代码等于“1”,我应该运行服务 B,否则不运行。我的条件跳转是:
contains(text(), "1")
也试过contains(., "1")
如果我从 Conditional Goto 窗口中的运行图标测试此条件,它会正确解决该条件,但如果我从 TestSuite 运行它,我会收到消息“缺少匹配条件,继续前进”并执行服务 B .
Google 中只有少数几个搜索结果与此错误相关,只有在其中一个中我发现了另一个带有 Groovy 脚本的选项 (link here):
import groovy.json.JsonSlurper
responseContent = testRunner.testCase.getTestStepByName("Service A step").getPropertyValue("response")
slurperresponse = new JsonSlurper().parseText(responseContent)
myCode = slurperresponse.parentObject.myCode
if ('1'.equalsIgnoreCase(myCode.toString())) testRunner.gotoStepByName("Service B Step")
else log.info("Some error")
但它不起作用,这意味着服务 B 再次被执行,事件不应该执行)。
如果你能在这里提供帮助,我将非常感激,如果你有这两个选项中的任何一个知道为什么 Conditional Goto 会显示该错误,或者为什么 Service B 会使用 Groovy 脚本执行。
提前致谢
更新:TestSuite 中的步骤列表,根据@Rao 请求(抱歉,我无法添加带有真实组件的图像)
- REST 服务,返回 JSON 响应
- Groovy 脚本,用于读取上一个响应中包含的令牌并将其作为标头插入到下一个 REST 服务中
- REST 服务(这将是“服务 A”),返回 JSON 响应(它正确接收在上一步中插入的标头)
- Groovy 脚本(在描述中显示)
- REST 服务(这将是“服务 B”),返回 JSON 响应
这是我在 TestSuite 中唯一的组件
【问题讨论】:
-
Service A返回什么?您的示例 JSON 无效... -
嗨@tim_yates,只是答案的一部分,只是为了显示我正在使用的变量“myCode”,我将更新 JSON 答案
-
log.info(myCode.toString())显示了什么?我怀疑这是一个列表 -
@tim_yates 当我从 Groovy 脚本窗口运行脚本时,它显示代码“Mon Jun 27 18:18:38 ART 2016:INFO: code: 0”的值,我认为是不是列表
-
@maxivis,您能否显示/列出测试用例中的步骤顺序?顺便说一句,脚本看起来不错。
标签: groovy soapui test-suite