Groovy - SoapUI - 请求的更新 Headers - 无法创建 If 语句
Groovy - SoapUI - Update Headers of Request - Cannot create If statement
我正在 SoapUI 中创建一个测试项目,需要执行以下操作:
- 我有一个包含 1 个测试用例的 "Token" 测试套件,其中包含:3 个步骤,为 3 种不同类型的用户(查看者、管理员、编辑者)生成令牌,然后是一个 Groovy 脚本获取令牌 Header 并将其添加到套件的所有测试用例的测试步骤。
- 对于某些测试,我想在测试步骤中添加额外的 Headers,但我不想删除已经分配的令牌 Headers。
我创建了这个脚本:
import groovy.json.JsonSlurper;
import com.eviware.soapui.support.types.StringToStringMap;
//Get through all the test steps in the project
testRunner.testCase.testSuite.project.testSuites.each {
suite ->
suite.getValue().testCases.each {
q1 ->
q1.getValue().testSteps.each {
it ->
if (it.getValue().config.type.equals("restrequest")) {
//Get the headers of the current teststep
def headers = it.getValue().getHttpRequest().getRequestHeaders()
//Append the new header to the existing list
headers.put("Header A", "Value A");
headers.put("Header B", "Value B");
headers.put("Header C", "Value C");
//Set the updated header list
it.getValue().getHttpRequest().setRequestHeaders(headers)
}
}
}
}
此脚本将 Headers 更新为我想要的所有测试用例,但还将 Headers 添加到 "Token" 测试套件并破坏它。
我想添加一个 "IF" 语句来检查:如果测试套件名称不包含 "Token" 添加额外的 headers 到它。如果它包含 "Token" 则保持原样。我在项目中首先有令牌测试套件,所以当自动调用它时(通过 Bamboo)它会生成令牌,因此 headers 到其余的测试用例。
我尝试了一些方法,但我的 Groovy 技能是业余的并且总是会导致错误。你能提出一个解决方案吗?
感谢您的宝贵时间。
正如您所指出的,当套件名称不是您的情况下的 Token
时,有一个 if 条件。
这是脚本,稍微重构/改进:
import com.eviware.soapui.impl.wsdl.teststeps.RestTestRequestStep
//Define your suite name to ignore
def suiteToIgnore = 'Token'
//Get Project
def project = testRunner.testCase.testSuite.project
project.testSuiteList.each { suite ->
if (suiteToIgnore != suite.name) {
suite.testCaseList.each { kase ->
kase.testStepList.each { step ->
if (step instanceof RestTestRequestStep) {
//Get the headers of the current teststep
def headers = step.httpRequest.requestHeaders
//Append the new header to the existing list
headers.put("Header A", "Value A");
headers.put("Header B", "Value B");
headers.put("Header C", "Value C");
//Set the updated header list
step.httpRequest.requestHeaders = headers
}
}
}
}
}
我正在 SoapUI 中创建一个测试项目,需要执行以下操作:
- 我有一个包含 1 个测试用例的 "Token" 测试套件,其中包含:3 个步骤,为 3 种不同类型的用户(查看者、管理员、编辑者)生成令牌,然后是一个 Groovy 脚本获取令牌 Header 并将其添加到套件的所有测试用例的测试步骤。
- 对于某些测试,我想在测试步骤中添加额外的 Headers,但我不想删除已经分配的令牌 Headers。
我创建了这个脚本:
import groovy.json.JsonSlurper;
import com.eviware.soapui.support.types.StringToStringMap;
//Get through all the test steps in the project
testRunner.testCase.testSuite.project.testSuites.each {
suite ->
suite.getValue().testCases.each {
q1 ->
q1.getValue().testSteps.each {
it ->
if (it.getValue().config.type.equals("restrequest")) {
//Get the headers of the current teststep
def headers = it.getValue().getHttpRequest().getRequestHeaders()
//Append the new header to the existing list
headers.put("Header A", "Value A");
headers.put("Header B", "Value B");
headers.put("Header C", "Value C");
//Set the updated header list
it.getValue().getHttpRequest().setRequestHeaders(headers)
}
}
}
}
此脚本将 Headers 更新为我想要的所有测试用例,但还将 Headers 添加到 "Token" 测试套件并破坏它。
我想添加一个 "IF" 语句来检查:如果测试套件名称不包含 "Token" 添加额外的 headers 到它。如果它包含 "Token" 则保持原样。我在项目中首先有令牌测试套件,所以当自动调用它时(通过 Bamboo)它会生成令牌,因此 headers 到其余的测试用例。
我尝试了一些方法,但我的 Groovy 技能是业余的并且总是会导致错误。你能提出一个解决方案吗?
感谢您的宝贵时间。
正如您所指出的,当套件名称不是您的情况下的 Token
时,有一个 if 条件。
这是脚本,稍微重构/改进:
import com.eviware.soapui.impl.wsdl.teststeps.RestTestRequestStep
//Define your suite name to ignore
def suiteToIgnore = 'Token'
//Get Project
def project = testRunner.testCase.testSuite.project
project.testSuiteList.each { suite ->
if (suiteToIgnore != suite.name) {
suite.testCaseList.each { kase ->
kase.testStepList.each { step ->
if (step instanceof RestTestRequestStep) {
//Get the headers of the current teststep
def headers = step.httpRequest.requestHeaders
//Append the new header to the existing list
headers.put("Header A", "Value A");
headers.put("Header B", "Value B");
headers.put("Header C", "Value C");
//Set the updated header list
step.httpRequest.requestHeaders = headers
}
}
}
}
}