如何在设置脚本中执行现有的测试用例,并在SOAP UI中从对当前测试用例的响应中获取价值?

时间:2019-01-30 10:25:16

标签: soapui load-testing

我有一个测试用例(测试用例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请求之一。

1 个答案:

答案 0 :(得分:0)

要在安装脚本中运行测试步骤,可以执行以下操作:

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的测试步骤中添加一个脚本断言,以在运行测试步骤时检索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}