【问题标题】:SoapUI Pro : Transfering a XML node from a TestCase to anotherSoapUI Pro:将 XML 节点从 TestCase 转移到另一个
【发布时间】:2012-10-16 00:05:55
【问题描述】:

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

测试用例 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属性,然后再把这个属性传递给新的肥皂请求:

测试用例 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 被实体化(例如,“real XML 的值,就像两个请求都在同一个 TestCase 中时一样!

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

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

【问题讨论】:

    标签: soap soapui


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      下面是详细解释:

      创建测试套件 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 属性。您可以在测试套件中将此属性用于以下测试用例。

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

      【讨论】:

      • 谢谢,但我不明白你的意思。这段代码如何将 XML 元素从 TestCase 复制到另一个?
      • 此代码不会将 XML 元素从一个步骤复制到另一个步骤。
      • 欢迎来到 Stack Overflow!感谢您发布您的答案!请务必仔细阅读FAQ on Self-Promotion。另请注意,每次链接到自己的网站/产品时,都要求发布免责声明。
      • 谢谢。我阅读了自我推销常见问题解答。我知道政策。我刚刚总共写了 5 个答案,只有在评论中我才包含一个链接。这是正常的,因为原始答案不包含链接。你通过发布我的每一个答案来阻止我。
      • 我无法编辑我的 cmets,这就是我刚刚删除的原因。 (我想说的是:当我发布 cmets 时,我不知道我必须披露该链接属于我的网站,并且在了解了规则后我无法编辑它们)无论如何我知道规则并且我不要一直做同样的事情。 (如果我提供属于我网站的链接,将披露)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      • 2012-03-12
      • 2019-12-03
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 2017-03-20
      相关资源
      最近更新 更多