下面的代码是我的groovy脚本的一部分,它在soapUI中执行一个测试用例。
def testCase = testRunner.testCase.testSuite.testCases["TestCase"];
def properties = new com.eviware.soapui.support.types.StringToObjectMap();
def async = false;
testCase.run(properties, async);
在执行完这段代码之后,测试用例的执行正常启动,但没有停止。假设测试用例中有13个测试步骤。一旦我运行了那个groovy脚本,它就从1开始到13,再从1开始到13,以此类推。直到我关闭整个soapUI应用程序。
有没有办法打破这个循环?
先谢了。
4条答案
按热度按时间zvms9eto1#
严格地说,你不能用类似“break”键这样的键来停止一个正在运行的脚本。由于公认的答案并没有充分说明这一点,我认为值得指出,以免别人徒劳地搜索。
由于Groovy脚本是在某个匿名的JVM工作线程中运行的,因此您目前对该工具的唯一希望是找到活动线程并终止它,然后希望该工具能够正常恢复。我尝试附加一个JIT调试器,但没有证明它有帮助。我最终重新启动了该工具,并重写了脚本中未保存的部分。
编写循环的一个好的经验法则是使用条件中断进行测试。
如果你的脚本停止响应,* 值得注意的是 * 它可能不一定是在无限循环中,而是有内存问题。这是我发布这个答案的第二个原因。
你可以查看这篇文章来寻找优化SOAPUI测试用例的内存使用的方法。它往往会变得饥渴。http://www.soapui.org/working-with-soapui/improving-memory-usage.html
具体来说,关闭任何打开的、可能被脚本中的循环更新的请求和响应窗口,重绘这些窗口的成本可能会使SOAPUI客户机很快陷入循环。
py49o6xq2#
假设您要运行包含多个步骤的“测试用例1(13在您的情况下)。它也有一个时髦的步骤“G1”(测试索引1)。当您从G1运行测试用例时,测试用例将逐个执行其测试步骤,并且一旦到达G1,它将再次开始执行,因为"这就是你在那一步中所做的,因此你以一个无限循环结束。
您应该做的是将开始执行的步骤排除在必须执行的测试用例之外。传统上,这样的脚本被称为驱动脚本,它要么是一个单独的测试用例,要么在应用程序本身之外。
要解决您的问题,您可以执行以下操作之一。
如果你觉得管用就告诉我。
7kjnsjlb3#
我以前
kkbh8khc4#
在属性中创建条件,例如布尔值为true的continueLoop。检查脚本中的值是否为true。如果希望脚本停止,请将值更改为false。