如何从当前 post 请求项目中的不同项目 运行 我的 GET 请求测试步骤 |肥皂-UI

How to RUN my GET request teststep from different project from my current post Request Project | SOAP-UI

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

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

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

我正在测试休息 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: Cannot get property 'testSteps' on null object error at line: 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)

我在一个groove文件名中添加了上面的代码:- Getrequest(请参考图片)

然后我在另一个GET请求中的值如下:-

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

我的项目结构如下图:-

您可以使用

TestStep.run(TestCaseRunner testRunner, TestCaseRunContext testRunContext)

到 运行 SoapUI 中任意位置的测试步骤

我已经找到解决上述问题的方法

对于 Get Request 创建一个新项目,然后创建一个 GET 请求。现在右键单击 request -> Clone TestStep 然后 select 您需要的项目并单击 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);