首页 > 解决方案 > 如何在设置脚本中执行现有测试用例,并从响应中获取对 SOAP UI 中当前测试用例的值?

问题描述

我有测试用例(测试用例 1),其中包含我想在启动时运行的 REST 请求,所以我禁用它并通过负载测试的设置脚本(测试用例 2)调用它。

但是,要运行负载测试 REST 请求,我需要来自测试用例 1 响应的值。如何将一个测试用例中的值传递给加载 UI REST 请求?

测试数据中一个 REST 请求的响应(测试用例 1)

{
   "VotingSessionID": 1326,
   "Name": "Test Vote Session",
   "Questions":    [
            {
         "VotingQuestionID": 4273,
         "Text": "Test A",
         "QuestionNumber": 1,
         "Options":          [
                        {
               "VotingOptionID": 17328,
               "OptionText": "Option A"
            },
                        {
               "VotingOptionID": 17329,
               "OptionText": "Option B"
            },
                        {
               "VotingOptionID": 17330,
               "OptionText": "Option C"
            }
         ],
         "IsActive": false
      }

我需要将“VotingOptionID”的值传递给测试用例 2 中的 REST 请求之一。

标签: soapuiload-testing

解决方案


要在设置脚本中运行测试步骤,您可以这样做:

def testSuiteName = "yourTestSuiteName"
def testCaseName = "yourTestCaseName"
def testStepName = "yourTestStepName"

def testStep = context.testCase.testSuite.project.testSuites[testSuiteName].testCases[testCaseName].testSteps[testStepName]

testStep.run(testRunner, context)

要检索 VotingQuestionID 的值,我看到的最简单的方法是在测试用例 1 中提取它(应该在测试用例 2 的设置脚本中调用)。

那么你可以做的是:

首先,创建一个项目级别的属性(双击您的项目 -> 底部的属性选项卡)

其次,在测试用例 1 的测试步骤中添加 Script Assertion 以在测试步骤运行时检索 VotingQuestionID 的值。在脚本断言中,您可以添加以下命令:

import groovy.json.JsonSlurper 
def response = new JsonSlurper().parseText(messageExchange.responseContent)
context.testCase.testSuite.project.setPropertyValue("yourProperty", response.Questions[0].VotingQuestionID)

第三,使用以下格式在您的测试用例 2 中使用该属性

${#Project#yourProperty}

推荐阅读