【问题标题】:Asserting that a JDBC Response Contains a Request Property's Value断言 JDBC 响应包含请求属性的值
【发布时间】:2013-10-09 06:33:46
【问题描述】:

我在 SoapUI 测试用例中有一个 JDBC 请求测试步骤,其属性 Foo 已由前面的属性传输测试步骤分配了一个值 - 例如12345.

我想使用 Contains 断言来检查测试步骤的响应是否包含 Foo 的值(因为测试步骤的 SQL 查询本质上是一个标量 SELECT - 例如 SELECT TOP 1 FooColumn FROM SomeTable WHERE FooColumn = :Foo),但这证明了有点棘手。

the SoapUI page on getting started with JDBC test steps 开始工作,我在 Contains 断言中尝试了 :Foo:这产生了 -> Missing token [:Foo] in Response

所以我尝试了${:Foo}: 这个“成功”,但我发现${:Whatever}Whatever 不是定义的属性)和${} 也“成功”了。这似乎不正确。

如何正确断言 JDBC 请求的响应包含 Foo 的值?

【问题讨论】:

    标签: sql-server jdbc soapui


    【解决方案1】:

    事实证明,JDBC 请求断言中的属性扩展类似于典型测试请求中的属性扩展(即像 the SoapUI page on property expansions 解释的那样)。

    :Foo 专用于 JDBC 请求的 SQL 查询 中的属性扩展。在测试步骤的包含断言中,应用标准属性扩展,并且${JDBC Request Name#Foo} 工作 - 成功而不是“成功”。相比之下,${JDBC Request Name#Whatever} 按预期失败。

    我仍然不清楚为什么${:Foo}${:Whatever}${} 似乎都成功了。如果有人能阐明那部分,我很想理解。

    更新:

    虽然对标准属性扩展的更改是正确的,但仅此更改对于 JDBC 请求测试步骤之前的属性传输测试步骤未向属性Foo 传输任何内容的情况仍然不够。

    在这种情况下,JDBC 请求的 Contains 断言产生了误报,因为 Foo 的值是空字符串,当然 JDBC 请求的(零行但非空)响应包含该字符串。将 Contains 断言更改为 <FOOCOLUMN>${JDBC Request Name#Foo}</FOOCOLUMN> 解决了这个问题。

    这让我意识到${:Foo}${:Whatever}${} 似乎都成功的可能原因:它们扩展为空字符串,JDBC 请求的响应再次包含这些字符串。与这个假设一致,<FOOCOLUMN>${:Foo}</FOOCOLUMN> 在复查时确实以-> Missing token [<FOOCOLUMN></FOOCOLUMN>] in Response 失败。

    现在我只是想知道为什么 ${:Foo}${:Whatever}${} 会扩展为空字符串,而我本以为它们会产生错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多