SOAP UI-在测试套件中所有测试用例的所有测试步骤的请求中设置节点值

时间:2019-06-14 13:18:38

标签: testing groovy soapui

我正在尝试在测试套件中所有测试用例的所有测试步骤的请求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() 

             } 
          } 
       } 
    } 
  }

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,您想在多个请求中“插入”值吗?

我建议不要这样做。我宁愿设置一些项目属性,然后让每个请求都简单地使用该特定变量。

我更喜欢这种方法的最重要的原因是,如果其他人(例如,如果您从事不同的工作)需要接管您的SoapUI项目,则使测试用例中的情况更加透明。 。当前,您有一些请求,这些请求中的值看起来似乎无处不在。我建议您明确说明请求中包含某种变量,以及该变量的来源。

此外,您还将获得更多的灵活性。如果某些要求在某个时候改变了您要更改的实体的路径或名称,则需要使您的代码在上述情况下能够处理。并非如此,如果您只是在每个请求中使用变量。