【问题标题】:Set HTTP Header value in rest api using Groovy in SOAP UI在 SOAP UI 中使用 Groovy 在 rest api 中设置 HTTP Header 值
【发布时间】:2017-10-10 21:00:43
【问题描述】:

我在 SOAP UI 中有一个 REST API 项目,其中包含一个测试套件中的 20 个测试用例。我想在每个测试步骤中添加一些标头值和sslkeystore。这是我的代码。

import com.eviware.soapui.support.types.StringToStringMap

testCaseList = testSuite.getTestCases()
         testCaseList.each
           {
             testCase = testSuite.getTestCaseByName(it.key)
             restTestSteps = testCase.getTestStepsOfType(com.eviware.soapui.impl.wsdl.teststeps.RestTestRequestStep)//only RestTestRequest steps

             restTestSteps.each
              {
                it.getRestRequest().setHttpHeader("TEST2")
                it.testRequest.setSslKeystore("**************")

                }
             }

上面的代码“TEST2”包含我要添加到每个测试用例的标头值。我已经在传出 ws-security 配置下的 ws-security 配置中配置了 TEST2。 但在上面的代码中,我收到以下错误:

groovy.lang.MissingMethodException:没有方法签名:com.eviware.soapui.impl.wsdl.teststeps.RestTestRequestStep.getRestRequest() 适用于参数类型:() 值:[] 可能的解决方案:getTestRequest(),获取HttpRequest()

请任何人帮助我,我如何在每个测试步骤中添加标题值。

【问题讨论】:

  • header 可以添加到测试步骤中,但不适用于测试用例。顺便说一句,从上面的描述中不确定TEST2 在哪里(在哪个测试用例中)?它将如何首先获得该步骤的响应?
  • @Rao 对不起,它应该是测试步骤......我编辑了我的帖子......这里 TEST2 是我设置标题值的名称,如用户名和密码,应该添加到每个测试步骤.从soup ui双击项目> Ws-security配置>传出Ws-security配置>单击+符号我们可以添加wss条目,如用户名和密码......所以最后我需要添加这两个值(用户名和密码)来添加测试套件中的每个测试步骤。
  • 你在使用 ReadyAPI 吗?
  • 是的,我正在使用 ReadyAPI

标签: rest groovy http-headers soapui ready-api


【解决方案1】:

如果您想为测试用例中的每个步骤设置标题值,您可以创建一个常规测试步骤来执行此操作。将 groovy 步骤放在测试用例的开头,即使您更改或添加新步骤,它也会起作用。我相信您可以调整 getAllHttpSteps 以包含套件中的所有测试用例,并将其作为第一次测试运行。

/**
 * This script populates all http requests in a test case with headers: 
 */
import com.eviware.soapui.support.types.StringToStringMap
// make a list of all http rest requests
getAllHttpSteps=testRunner.testCase.getTestStepsOfType(com.eviware.soapui.impl.wsdl.teststeps.RestTestRequestStep)
// iterate through the list of requests and populate the request headers
for (step in getAllHttpSteps)
{
    def headers = new StringToStringMap()
     headers.put("SomeHeader", "SomeHeaderValue")
     headers.put("sslKeystore", "keystoreValue")
}

【讨论】:

    【解决方案2】:

    如果您想在每个测试步骤中添加标头值和 sslkeystore,则将这些值添加为项目中的属性或自定义属性。然后在每个步骤中分配这些值。你愿意用 groovy 脚本来做这件事吗?

    【讨论】:

    • 是的,这对我来说很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多