我想使用SoapUI 5.0将groovy脚本连接到testlink服务器,然后将测试结果传递给测试链接
在尝试这样做之前,我安装了从GitHub(https://github.com/kinow/testlink-java-api)下载的TestLinkJavaAPI库作为jar文件。
我复制了testlink-java-api-1.9.17-1归档文件。jar到具有SoapUI的目录的路径如下:\SoapUI\lib和\SoapUI\bin\ext
//here is my code from the groovy script test step
import testlink.api.java.client.TestLinkAPIResults.*;
import testlink.api.java.client.TestLinkAPIClient.*;
def DEVKEY="2f404203b306bd8dd811a7f824c194d0";
def URL="http://172.29.0.73/testlink/lib/api/xmlrpc/v1/xmlrpc.php";
TestLinkAPIClient api = new TestLinkAPIClient(DEVKEY, URL);
运行此脚本时,发生以下无法解决的类错误
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script74.groovy: 7: unable to resolve class TestLinkAPIClient @ line 7, column 19. TestLinkAPIClient api = new TestLinkAPIClient(DEVKEY, URL); ^ org.codehaus.groovy.syntax.SyntaxException: unable to resolve class TestLinkAPIClient @ line 7, column 19. at org.codehaus.groovy.ast.ClassCodeVisitorSupport.addError(ClassCodeVisitorSupport.java:146) at .......
在此处输入图像描述
在我的例子中,是否可以使用groovy脚本从SoapUI连接到testlink?有谁能举例说明如何正确地做到这一点?
您必须以如下方式导入库:
this.getClass().classLoader.addURL(new File(context.expand(project.resourceRoot) + "/libs/testlink.jar").toURL());
或者更好的是,将所有依赖项放在一个jar文件中,并使用该脚本行。您可以使用类的修饰名称:
testlink.api.java.client.TestLinkAPIClient api = new testlink.api.java.client.TestLinkAPIClient(DEVKEY, URL);
90%的时候这是对的。
由于Groovy和SoapUI不一致,您可能必须使用两个步骤:
加载类后,该错误将不再显示。
也许有人会有用。结果用两种方法解决了这个问题:
>
import com.eviware.soapui.model.testsuite.Assertable.AssertionStatus
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Map;
import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
def TranId= "TranId : " + testRunner.testCase.getPropertyValue( "TranId" )
def Response= "Response: "+ testRunner.testCase.getPropertyValue( "Response" )
def TL_extid = testRunner.testCase.getPropertyValue( "TL_extid" )
def add_info = TranId +" " + Response;
public class TestlinkAPIXMLRPCClient
{
// Substitute your Dev Key Here
public static final String DEV_KEY = "fcd38512b5c3e44befbc8b862e678894";
// Substitute your Server URL Here
public static final String SERVER_URL = "http://172.29.0.78/testlink/lib/api/xmlrpc/v1/xmlrpc.php";
/**
* report test execution to TestLink API
*
* @param int tcid
* @param int tpid
* @param String status
*/
public static void testLinkReport(String tcid, int tpid,int bid,String plname, String status, String notes)
{
try
{
XmlRpcClient rpcClient;
XmlRpcClientConfigImpl config;
config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL(SERVER_URL));
rpcClient = new XmlRpcClient();
rpcClient.setConfig(config);
ArrayList<Object> params = new ArrayList<Object>();
Hashtable<String, Object> executionData = new Hashtable<String, Object>();
executionData.put("devKey", DEV_KEY);
executionData.put("testcaseexternalid", tcid);
executionData.put("testplanid", tpid);
executionData.put("buildid", bid);
executionData.put("platformname", plname);
executionData.put("status", status);
executionData.put("notes", notes);
params.add(executionData);
Object[] result = (Object[]) rpcClient.execute("tl.reportTCResult", params);
// Typically you'd want to validate the result here and probably do something more useful with it
System.out.println("Result was:\n");
for (int i=0; i< result.length; i++)
{
Map item = (Map)result[i];
System.out.println("Keys: " + item.keySet().toString() + " values: " + item.values().toString());
}
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (XmlRpcException e)
{
e.printStackTrace();
}
}
}
//Send to testlink:
//TestCaseID tcid, TestLpanID tpid, BuildId bid, PlatformName plname, status ,notes
TestlinkAPIXMLRPCClient.testLinkReport("$TL_extid", 7367,238 ,"FLORAWARE", "p",
"Result from GROOVY SOAPUI $add_info");
我认为这是最优雅的方式。
在soapui测试项目中,我创建了一个新的rest服务,方法是在带有testlink服务器地址的资源路径中指定testlink api的路径。如下所示:TestLink rest服务
然后添加了以下REST请求,用于将参数传递到testlink:
<methodCall>
<methodName>tl.reportTCResult</methodName>
<params>
<param>
<value>
<struct>
<member>
<name>devKey</name>
<value>${#TestSuite#DEV_KEY}</value>
</member>
<member>
<name>status</name>
<value>${TL_Properties#TestResult}</value>
</member>
<member>
<name>buildid</name>
<value>
<i4>${TL_Properties#LatestBuildID}</i4>
</value>
</member>
<member>
<name>platformname</name>
<value>FLORAWARE</value>
</member>
<member>
<name>notes</name>
<value>TEST RUN FROM SOAPUI Transaction ID: ${TL_Properties#TranID} Response: ${TL_Properties#Response}</value>
</member>
<member>
<name>testplanid</name>
<value>
<i4>7367</i4>
</value>
</member>
<member>
<name>testcaseexternalid</name>
<value>${#TestCase#TL_extid}</value>
</member>
<member>
<name>execduration</name>
<value>1</value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>
问题内容: 我刚开始学习groovy,我想将svnSourcePath和svnDestPath传递给svn copy命令中的shell脚本。但是网址未呈现。 输出量 问题答案: 在变量周围添加了单引号和加operator(’+ variable +’)。现在正在工作
当我尝试在soapUI测试步骤中解析响应时,收到了以下异常。也尝试了getXMLHolder方法。还是没运气。 答复如下
我是SoapUI的新手,遇到了一个我不明白的问题。目标:我想在不同的测试步骤中将结果从一个Groovy脚本传递到另一个Groovy脚本。 第1步:我有一个生成GUID的Groovy脚本: 步骤2:我有一个属性转移步骤,它接受上述脚本的结果,并将其传递到HTTP请求步骤(正在工作) 步骤3:我有第二个Groovy脚本,它运行curl命令,其中需要包含相同的GUID。 第3步是问题开始的地方。如何从第
我有一个在生成SpringBoot jar文件后运行的gradle脚本: 到目前为止,gradle脚本只打印了一条消息: 这对我的身材很好。 gradle runScript 任务:运行脚本你好世界从groovy版本2.4.15 我想要的是: 我想做的是传入SpringBoot生成的jar名称,或者在或其他任何东西。 所以它会打印: hello world生成的jar文件名是my-service-
问题内容: 我是docker世界的新手。我必须调用一个通过Docker容器获取命令行参数的shell脚本。例如:我的shell脚本如下所示: Dockerfile看起来像这样: 我不确定如何在运行容器时传递参数 问题答案: 使用相同 使用现有的Dockerfile构建映像: 使用参数或其他方式运行映像。
问题内容: 我从Jenkins触发了一个shell脚本,该脚本获取日期并将其导出为环境(Linux)变量$ DATE。我需要在同一詹金斯工作中使用此$ DATE。我做了工作作为参数构建。创建一个字符串参数作为DATE值,如DATE = $ DATE。但这是行不通的。 请建议! 问题答案: 您提到要在外壳程序脚本中导出环境变量,该脚本可能是通过“执行外壳程序”步骤启动的。 问题是,一旦完成外壳程序步