0

当使用Property Transfert窗口将从第一个 Soap 请求的响应中获取的 XML 节点(带有子节点)传输到第二个 Soap 请求时,并且两个请求都在同一个 TestCase中,它的效果很好:

测试用例 1:

Source : [First Soap Request] Property : [Response]

declare namespace ns='http://xxx.com';
//ns:xxxxx[1]/ns:return[1]

-------------------------------------------
Target : [Second Soap Request] Property : [Request]

declare namespace ser='http://xxx.com';
//ser:xxxxx[1]/ser:someobject[1]

但是如果这两个请求在不同的 TestCases中,我想需要先将 XML 节点保存到TestSuite 属性,然后将此属性转移到新的 Soap 请求中:

测试用例 1:

Source : [First Soap Request] Property : [Response]

declare namespace ns='http://xxx.com';
//ns:xxxxx[1]/ns:return[1]

-------------------------------------------
Target : [TestSuite1] Property : [myVariableToTransfert]

测试用例 2:

Source : [TestSuite1] Property : [myVariableToTransfert]

-------------------------------------------
Target : [Second Soap Request] Property : [Request]

declare namespace ser='http://xxx.com';
//ser:xxxxx[1]/ser:someobject[1]

这不行!

当从 TestSuite 作为属性获取第二个请求时,似乎我无法在第二个请求中获得有效的 XML。有时该值为空,有时它包含在 CDATA 标记中或 XML 被实体化(例如,“<”是“<”)。我无法将值作为真正的 XML获得,就像两个请求都在同一个 TestCase 中一样!

我使用了“传输文本内容”、“实体化传输值”和“传输子节点”选项,但没有成功!

如何将 XML 节点从 TestCase 中的请求转移到第二个 TestCase 中的请求?

4

2 回答 2

0

在测试套件中将您的响应值设置为自定义属性,然后您可以将其用于进一步测试。请记住,它会将您的值保存为字符串数据,因此如果您要保存整数数据,那么您必须在进一步使用之前将其转换为整数。像 testRunner.testCase.testSuite.getPropertyValue("").toInteger()

于 2012-10-29T09:17:56.010 回答
0

以下是详细解释:

创建测试套件 1 和以下步骤

  test case 1
  DataGen step 
  test case 2

在 DataGen 步骤中,打开编辑器,通过单击“+”按钮添加新属性并选择脚本作为类型(您还应该为属性命名,现在假设名称为 yourprop)。

在屏幕下方,您应该会看到脚本编辑器。并创建如下脚本(请注意,您应该根据您的 Web 服务和 XML 更改变量)

def testXML = context.expand( '${Test Request#Response#declare namespace ns1=\'http://namespace/'; //ns1:WebServiceNameResponse[1]/ns1:nodeName[1]}' )

现在您已经通过名为 yourprop 的 DataGen 创建了一个 soapUI 属性。您可以在测试套件中将此属性用于以下测试用例。

我希望这会有所帮助,如果您不满意或遇到任何问题,请告诉我,我会尽力而为。

于 2012-10-22T12:59:45.190 回答