我正在尝试在测试套件中所有测试用例的所有测试步骤的请求xml中设置节点值。
第一个测试用例中使用了Groovy脚本,一旦脚本尝试在第二个测试用例中编辑相同的标签,我就会收到错误消息(XmlException:Unexpected Element:CDATA)。
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def AlltestCases = testRunner.testCase.testSuite.project.testSuites[testRunner.testCase.testSuite.name]
0.upto(AlltestCases.getTestCaseCount()) {
AlltestCases.getTestCaseList().each{
it.getTestStepList().each{ if(it.getClass()==com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStep){
if(it.getName().toLowerCase().contains("verify")){
step = groovyUtils.getXmlHolder("${it.getName()}"+"#Request")
step.setNodeValue("//*:Name/text()", "\$"+"{#TestSuite#NAME_ID}")
step.updateProperty()
}
}
}
}
}
答案 0 :(得分:1)
如果我正确理解了您的问题,您想在多个请求中“插入”值吗?
我建议不要这样做。我宁愿设置一些项目属性,然后让每个请求都简单地使用该特定变量。
我更喜欢这种方法的最重要的原因是,如果其他人(例如,如果您从事不同的工作)需要接管您的SoapUI项目,则使测试用例中的情况更加透明。 。当前,您有一些请求,这些请求中的值看起来似乎无处不在。我建议您明确说明请求中包含某种变量,以及该变量的来源。
此外,您还将获得更多的灵活性。如果某些要求在某个时候改变了您要更改的实体的路径或名称,则需要使您的代码在上述情况下能够处理。并非如此,如果您只是在每个请求中使用变量。