当前位置: 首页 > 知识库问答 >
问题:

使用Testrunner时,SoapUI Groovy脚本的JSON响应为空

谷梁智
2023-03-14

使用 Windows 7 和 Soap 5.2.0 免费软件。

我也在Smart Bear社区询问过这一点,他们只给了我推荐阅读的帖子。这些帖子与这个问题无关。

我有一个 REST 项目,它有一个测试套件和一个包含两个测试步骤的测试用例。第一步是一个时髦的步骤,带有一个时髦的脚本,它调用第二个测试步骤。第二个测试步骤是 REST GET 请求,该请求将字符串发送到我们的 API 服务器,并以 JSON 格式接收响应。第二个测试步骤有一个脚本断言,它执行“log.info 测试正在运行”,所以我可以看到第二个测试何时运行。

当 groovy 脚本调用第二个测试步骤时,它会在 groovy 脚本中读取第二个测试步骤的 JSON 响应,如下所示:

def response = context.expand('${PingTest#Response}').toString()  // read results

我还可以使用它来获取JSON响应:

def response = testRunner.testCase.getTestStepByName(testStepForPing).getPropertyValue("response") 

当通过Soap UI运行时,该项目按预期运行,但是当我用test runner运行该项目时,使用上面显示的两种方法,来自groovy脚本调用以获得JSON响应的响应是空的。当从testrunner运行时,我知道调用了第二个测试步骤,因为我在脚本日志中看到了log.info结果。

这是DOS日志的一部分,显示第二个测试步骤正在运行,并且第二个步骤运行时似乎没有错误。

SoapUI 5.2.0 TestCase Runner
12:09:01,612 INFO  [WsdlProject] Loaded project from [file:/C:/LichPublic/_Soap/_EdPeterWorks/DemoPing.xml]
12:09:01,617 INFO  [SoapUITestCaseRunner] Running SoapUI tests in project [demo-procurement-api]
12:09:01,619 INFO  [SoapUITestCaseRunner] Running Project [demo-procurement-api], runType = SEQUENTIAL
12:09:01,628 INFO  [SoapUITestCaseRunner] Running SoapUI testcase [PingTestCase]
12:09:01,633 INFO  [SoapUITestCaseRunner] running step [GroovyScriptForPingtest]
12:09:01,932 INFO  [WsdlProject] Loaded project from [file:/C:/LichPublic/_Soap/_EdPeterWorks/DemoPing.xml]
12:09:02,110 DEBUG [HttpClientSupport$SoapUIHttpClient] Attempt 1 to execute request
12:09:02,111 DEBUG [SoapUIMultiThreadedHttpConnectionManager$SoapUIDefaultClientConnection] Sending request: GET /SomeLocation/ABC/ping?echoText=PingOne HTTP/1.1
12:09:02,977 DEBUG [SoapUIMultiThreadedHttpConnectionManager$SoapUIDefaultClientConnection] Receiving response: HTTP/1.1 200
12:09:02,982 DEBUG [HttpClientSupport$SoapUIHttpClient] Connection can be kept alive indefinitely
12:09:03,061 INFO  [log] **Test Is Run**

这是我在DOS命令行中使用的testrunner调用:

“C:\Program Files\SmartBear\SoapUI-5.2.0\bin\testrunner.bat" DemoPing.xml

当 groovy 脚本通过测试运行器运行时,我使用 ProjectFactoryRegistry 和 WsdlProjectFactory 获取项目。关于为什么我在使用测试运行器时无法读取 JSON 响应的任何建议将不胜感激。

如果需要,我可以提供更多信息/代码。

谢谢

共有2个答案

张晨朗
2023-03-14

谢谢饶!你的建议在我如下图使用时奏效了。DOS窗口显示响应文本:

设置步骤名称作为要运行的测试步骤名称的变量。

def stepName="平测试"

//使用stepName获取用于调用测试步骤的测试步骤(testCase是测试用例名称的字符串变量)。

def step = context.testCase.getTestStepByName(stepName)

//调用测试步骤。

step.run(testRunner,上下文)

//显示结果。

def response =新字符串(step . test request . message exchange . response . response content)

log.info响应//此响应正确显示在DOS窗口中

json 诽谤者也有效。在您方便的时候,如果您有任何建议的链接或书籍来描述您在此处使用的技术,请告诉我。

谢谢

简宏义
2023-03-14

请尝试以下脚本:

import groovy.json.JsonSlurper
//provide the correct rest test step name
def stepName='testStepForPing'
def step = context.testCase.getTestStepByName(stepName)
def response = new String(step.testRequest.messageExchange.response.responseContent)
log.info response
def json = new JsonSlurper().parseText(response)
 类似资料:
  • 是否有一种简单的方法可以捕获PostMan脚本中请求和响应的响应时间? 我尝试通过创建一个集合来完成以下工作,然后在测试中编写以下脚本来捕获值并将其放入环境变量中: 这为我提供了环境变量中的值,但我每次都需要专门去那里检查时间。 我尝试的另一种方法是对集合使用“Runner ”,并从导出结果中的“totalRequestTime”值获得响应时间。但是当我运行大约50个请求时,很难为每个单独的请求捕

  • 问题内容: 我无法使用RestTemplate(org.springframework.web.client.RestTemplate)应对额外的弹簧行为,但没有成功。 我在代码下面的Hole应用程序中使用,并且始终会收到XML响应,该响应会解析并评估其结果。 但是无法确定为什么执行后服务器响应为JSON格式: 我已经在较低级别的RestTemplate上进行了调试,内容类型为XML,但是不知道为

  • 问题内容: 我想添加到我的反应组件 我知道我可以简单地使用JSX添加它,但我不知道如何使用它, 例如,此脚本具有一个称为A.Sort()的函数,如何调用它并从组件中使用它? 问题答案: 您可以异步加载脚本并在加载时访问它。 它应该附加到。 要么

  • 问题内容: 我是Go的新手,我正在尝试构建一个简单的HTTP服务器。但是我在JSON响应中遇到了一些问题。我编写了以下代码,然后尝试邮递员发送一些JSON数据。但是,我的邮递员总是得到空响应,而is 。然后,我在http://www.alexedwards.net/blog/golang-response- snippets#json中 检查了一个示例。我复制并粘贴了示例,并且效果很好。但是我看不

  • 问题内容: 您如何使用Scrapy抓取返回JSON的Web请求?例如,JSON如下所示: 我将要抓取特定的项目(例如和在上面)并保存到csv。 问题答案: 这与使用Scrapy的html响应相同。唯一的区别是您应该使用模块来解析响应: 希望有帮助。

  • 问题内容: 我在下面的我的jquery脚本时遇到问题,这是一个基本的精简版本,甚至无法正常工作,我有jquery脚本调用的php文件,我将其设置为编码并显示json响应 然后,在jquery脚本中,它应该读取该值并对其进行响应,但未获得响应。 json.response是在json字符串中调用名称响应变量的错误方式吗? 有人可以帮助我吗 更新; 我已经更改了 json.response 进入 数据