你好我正试图在Soapui中做一个简单的groovy脚本
我尝试获取一个testcase属性并增加它然后保存它。 当我运行然后脚本它增加它两次我不知道为什么。我尝试了不同的语法,但到目前为止似乎没有任何工作。
以下是显示我的问题的屏幕截图
这里我运行测试2次,首先变量是3,通常当我运行测试时,第二次前值应该是4,后面是5,而不是5和6。
答案 0 :(得分:1)
我相信您不希望Script Assertion
中有增量逻辑。
而是在counter
的测试用例中增加Setup Script
。
如果您需要脚本断言中的counter
值,请单独阅读。
希望这有帮助。
顺便说一下,我没有看到您显示的脚本有任何问题。
如果正在操作此变量,请检查是否还有其他地方。
def cnt = context.testCase.getPropertyValue('COUNT') as Integer
if (cnt< 10){
log.info "before : $cnt"
cnt += 1
log.info "after : $cnt"
context.testCase.setPropertyValue('COUNT', cnt.toString())
}
答案 1 :(得分:0)
无法发表评论。我在5.3.0中看到了同样的问题 - 这是我的脚本,它从属性中获取字符串值,将其转换为Integer,递增并以字符串形式发回。
loopsInt = messageExchange.modelItem.testStep.testCase.getPropertyValue("loops").toInteger();
log.info loopsInt;
loopsInt++;
log.info loopsInt;
messageExchange.modelItem.testStep.testCase.setPropertyValue("loops", String.valueOf(loopsInt));
我在增加之前记录该值,然后立即记录,如您所见,该值正在递增两次。在这里我运行脚本3次:
Thu Mar 16 12:04:54 NZDT 2017:INFO:52
Thu Mar 16 12:04:54 NZDT 2017:INFO:53
Thu Mar 16 12:04:56 NZDT 2017:INFO:54
Thu Mar 16 12:04:56 NZDT 2017:INFO:55
Thu Mar 16 12:04:59 NZDT 2017:INFO:56
Thu Mar 16 12:04:59 NZDT 2017:INFO:57
无论是使用loopsInt ++还是loopsInt = loopsInt + 1,我都得到相同的结果。“loops”属性在其他任何地方都没有使用。怪异。
答案 2 :(得分:0)
使用脚本断言窗口中的绿色箭头执行断言脚本时,会执行两次。
我使用了以下脚本:
def loopsInt = messageExchange.modelItem.testStep.testCase.getPropertyValue("myNum").toInteger();
log.info loopsInt
loopsInt++
messageExchange.modelItem.testStep.testCase.setPropertyValue("myNum", String.valueOf(loopsInt))
见下图。一个窗口记录偶数,其次是奇数。
请注意, Script Assertion Window 中的执行仅用于调试脚本。执行测试用例(测试步骤)时,脚本只按预期执行一次。
无论如何,我认为有更好的地方来设置测试用例属性(setUp脚本,Groovy Script测试步骤等)。我建议使用断言脚本来检查消息交换。
卡雷尔
答案 3 :(得分:0)
发现了一个非常奇怪的原因。 如果具有此断言的testStep已成功运行[即,如果是SOAP测试步骤,则它变为绿色],之后如果打开断言并单独运行,则会增加两次。进入编辑器后,一次进入测试步骤。
假设testSetp失败[颜色为红色],那么你尝试单独运行断言,它完全正常。