在 SOAP UI 中使用 Groovy 在 rest api 中设置 HTTP Header 值

Set HTTP Header value in rest api using Groovy in SOAP UI

我在 SOAP UI 中有一个 REST API 项目,它在一个测试套件中包含 20 个测试用例。我想在每个测试步骤中添加一些 header 值和 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" 包含我要添加到每个测试用例的 header 值。我已经在传出 ws-security 配置下的 ws-security 配置中配置了 TEST2。 但在上面的代码中,我收到以下错误:

groovy.lang.MissingMethodException: No signature of method: com.eviware.soapui.impl.wsdl.teststeps.RestTestRequestStep.getRestRequest() is applicable for argument types: () values: [] Possible solutions: getTestRequest(), getHttpRequest()

任何人都可以帮助我如何在每个测试步骤中添加 header 值。

如果要在每个测试步骤中添加 header 值和 sslkeystore,请将这些值添加为项目中的属性或自定义属性。然后在每个步骤中分配这些值。您愿意使用 groovy 脚本来执行此操作吗?

如果您想为测试用例中的每个步骤设置 header 值,您可以创建一个 groovy 测试步骤来执行此操作。将 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")
}