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

时间:2017-03-03 14:36:31

标签: testing soap groovy automated-tests soapui

你好我正试图在Soapui中做一个简单的groovy脚本

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

以下是显示我的问题的屏幕截图

enter image description here

这里我运行测试2次,首先变量是3,通常当我运行测试时,第二次前值应该是4,后面是5,而不是5和6。

4 个答案:

答案 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())
}

enter image description here

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

见下图。一个窗口记录偶数,其次是奇数。

enter image description here

请注意, Script Assertion Window 中的执行仅用于调试脚本。执行测试用例(测试步骤)时,脚本只按预期执行一次。

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

卡雷尔

答案 3 :(得分:0)

发现了一个非常奇怪的原因。 如果具有此断言的testStep已成功运行[即,如果是SOAP测试步骤,则它变为绿色],之后如果打开断言并单独运行,则会增加两次。进入编辑器后,一次进入测试步骤。

假设testSetp失败[颜色为红色],那么你尝试单独运行断言,它完全正常。