在 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")
}
我在 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")
}