0

我在 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()、getHttpRequest()

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

4

2 回答 2

1

如果要在每个测试步骤中添加标头值和 sslkeystore,请将这些值添加为 Project 中的 Properties 或 Custom Properties。然后在每个步骤中分配这些值。你愿意用 groovy 脚本来做这件事吗?

于 2017-10-11T07:05:41.177 回答
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")
}
于 2018-12-12T16:55:51.867 回答