如何从我当前的帖子Request Project |中的不同项目中运行我的GET请求测试步骤SOAP-UI

时间:2016-01-14 13:19:39

标签: rest groovy soapui

我遇到一个问题,如果我将第一个请求更改为POST / GET,那么所有其他请求都是相同的。

所以我为我的所有GET请求创建了一个新项目。

现在可以使用groovy,我可以运行任何测试用例或测试步骤吗?

我正在测试Rest API

我正在使用下面的代码,然后得到如下错误: -

def tCase = testRunner.testCase.testSuite.testCases["Request_for_Product_Import"]

def tStep = tCase.testSteps["Api - Chekcing_Request_Product_Import"]

TestStep.run( tCase,  tStep)
  

java.lang.NullPointerException:无法获取属性“testSteps”   第3行的空对象错误

我的请求 - > “Api - Chekcing_Request_Product_Import”出现在不同的项目

还有一个依赖我的第一个groovy脚本从第一个请求获取数据,我需要将该值传递给另一个项目上的第二个脚本: - Api - Chekcing_Request_Product_Import

为此我使用下面的代码: -

def valueFromPreviousResponse = <replace your value here>
context.testCase.testSuite.setPropertyValue('REQUEST_ID', valueFromPreviousResponse)

我在凹槽文件名中添加了以上代码: - Getrequest(请参阅图片)

然后我是另一个GET请求中的值,如下所示: -

https://mywebsite/api/api_jobs/get_response?request_id=${#TestSuite#REQUEST_ID}

我的项目结构如下图所示: -

enter image description here

2 个答案:

答案 0 :(得分:1)

我找到了实现上述问题的方法

对于Get Request,创建一个新项目,然后创建一个GET请求。现在右键点击请求 - &gt;克隆TestStep然后选择您需要的项目并单击Ok。

现在另一件事是如何发送来自第一个请求的值。 为此,您可以将该值设置为SOAP-UI的全局属性,然后可以使用groovy脚本

检索该值

要将值设置为全局属性,请使用以下代码: -

def valueFromPreviousResponse = slurperresponse.products.request_id
com.eviware.soapui.SoapUI.globalProperties.setPropertyValue( "Request_Dynamic_ID", valueFromPreviousResponse )

要从全局属性中读取值,请使用以下代码: -

def Globalrequest = com.eviware.soapui.SoapUI.globalProperties.getPropertyValue( "Request_Dynamic_ID" )
log.info(Globalrequest)

使用下面的代码

运行SOAP-UI中任何项目的测试用例
//get test case from other project or from the same one
project = testRunner.getTestCase().getTestSuite().getProject().getWorkspace().getProjectByName("REST Project 2")
testSuite = project.getTestSuiteByName("PIM2_TestSuite");
testCase = testSuite.getTestCaseByName("Request_for_Product_Import");

//set properties if you need
//testRunner.testCase.setPropertyValue(property_name, property_value);
//testRunner.testCase.setPropertyValue(another_property_name, another_property_value);

// run test case
runner = testCase.run(new com.eviware.soapui.support.types.StringToObjectMap(), false);

答案 1 :(得分:0)

您可以使用

TestStep.run(TestCaseRunner testRunner, TestCaseRunContext testRunContext)

从SoapUI的任何地方运行测试步骤