Testing Groovy断言脚本在SoapUI中执行两次

Testing Groovy断言脚本在SoapUI中执行两次,testing,soap,groovy,automated-tests,soapui,Testing,Soap,Groovy,Automated Tests,Soapui,您好,我正在尝试在Soapui中编写一个简单的groovy脚本 我尝试获取一个testcase属性,并增加它,然后保存它。 当我运行脚本时,它会增加两倍,我不知道为什么。我尝试了不同的语法,但到目前为止似乎没有任何效果 这是一个屏幕截图,显示了我的问题 在这里,我运行了两次测试,第一次变量是3,通常在第二次运行测试时,before值应该是4,after值应该是5,而不是5和6。我相信您不希望在脚本断言中使用增量逻辑。 而是在测试用例的设置脚本中增加计数器 如果需要脚本断言中的计数器值,只需单独

您好,我正在尝试在Soapui中编写一个简单的groovy脚本

我尝试获取一个testcase属性,并增加它,然后保存它。 当我运行脚本时,它会增加两倍,我不知道为什么。我尝试了不同的语法,但到目前为止似乎没有任何效果

这是一个屏幕截图,显示了我的问题


在这里,我运行了两次测试,第一次变量是3,通常在第二次运行测试时,before值应该是4,after值应该是5,而不是5和6。

我相信您不希望在
脚本断言中使用增量逻辑。
而是在测试用例的
设置脚本
中增加
计数器

如果需要脚本断言中的
计数器
值,只需单独阅读即可

希望这有帮助

顺便说一下,我看不出您所展示的脚本有任何问题

如果正在操纵此变量,请检查是否还有其他位置

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())
}
def cnt=context.testCase.getPropertyValue('COUNT')作为整数
如果(cnt<10){
log.info“之前:$cnt”
cnt+=1
log.info“在:$cnt之后”
context.testCase.setPropertyValue('COUNT',cnt.toString())
}

还不能发表评论。我在5.3.0中也看到了同样的问题-下面是我的脚本,它从属性中获取字符串值,将其转换为整数,递增并作为字符串发送回

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,我都会得到相同的结果。“循环”属性不在其他任何地方使用。奇怪。

当您在脚本断言窗口中使用绿色箭头执行断言脚本时,它会执行两次

我使用了以下脚本:

def loopsInt = messageExchange.modelItem.testStep.testCase.getPropertyValue("myNum").toInteger();
log.info loopsInt
loopsInt++
messageExchange.modelItem.testStep.testCase.setPropertyValue("myNum", String.valueOf(loopsInt))
见下图。一个窗口记录偶数,第二个窗口记录奇数

请注意,脚本断言窗口中的执行仅用于调试脚本。当您执行测试用例(测试步骤)时,脚本只执行一次,正如预期的那样

无论如何,我认为有更好的地方可以设置测试用例属性(设置脚本、Groovy脚本测试步骤和其他)。我建议使用断言脚本检查消息交换


卡雷尔发现了一个非常奇怪的原因。 如果具有此断言的测试步骤已成功运行[即,如果是SOAP测试步骤,则它将变为绿色],并且在此之后,如果打开断言并单独运行它,则它将递增两次。一次在编辑器中,一次在测试步骤本身中


假设testSetp失败[颜色为红色],然后您尝试单独运行断言,它工作得非常好。

我尝试了此脚本,但仍然得到相同的结果!,我尝试在测试步骤中更改变量名称,我尝试了您的代码,我尝试了其他不同的语法,但似乎都不起作用…因此,为了测试增量,您建议我执行整个测试步骤,而不是执行脚本断言?断言脚本窗口适合测试脚本,请注意它执行了两次。所以你需要计算不同的结果。我假设双重执行是SoapUI故障。