如何通过groovy动态更新ReadyAPI / SoapUI中的资源值?

时间:2018-03-26 15:42:38

标签: api groovy resources soapui ready-api

我的资源采用这种格式" testing / 101 / getCustomer / 99"

我需要更改" 101"和" 99"由groovy动态部分,以便我可以在同一个测试用例中运行多个值。我查看了ReadyAPI的内置功能,但它并没有那么有用。

我也找到了这个链接,但它改变了整个项目中的资源。我正在寻找的解决方案是测试用例级别。因为我的每个测试用例都有不同的URL。

https://community.smartbear.com/t5/SoapUI-Open-Source/How-to-set-the-resource-path-at-run-time-while ...

任何帮助将不胜感激。

这是我到目前为止所尝试的内容

import com.eviware.soapui.impl.rest.RestResource
import java.io.*;
def project = testRunner.testCase.testSuite.getProject()
String restServiceName = "Resource name" (From the Rest Request Properties)
List<RestResource> ops = project.getInterfaces()[restServiceName].getOperationList()

log.info("ops ::"+ops);
log.info("ops size ::"+ops.size());

for (RestResource restResource : ops) {
String pathStr = restResource.getFullPath();
log.info("pathStr first-->"+restResource.getFullPath());

restResource.setPath("testing/101/getCustomer/99");

        if (pathStr.contains("101"))
        {
            restResource.setPath("testing/101/getCustomer/99");
            restResource.setPath(pathStr.replace("testing/101/getCustomer/99", "testing/50/getCustomer/99"));
        } 

}

1 个答案:

答案 0 :(得分:0)

您可以使用testCase级别属性

首先通过Groovy设置res的值,如下所示

def x=101
def y=99
def res="testing/$x/getCustomer/$y"
testRunner.testCase.setPropertyValue("resourc",res)

现在设置了testcase级别属性。它可以在任何地方使用,如下所示

${#TestCase#res}