断言JDBC响应包含请求属性的值

时间:2013-10-09 06:33:47

标签: sql-server jdbc soapui

我在具有属性Foo的SoapUI测试用例中有一个JDBC Request测试步骤,该属性已通过前面的Property Transfer测试步骤分配了一个值 - 例如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的值?

1 个答案:

答案 0 :(得分:0)

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

:Foo特别适用于JDBC Request的 SQL Query 中的属性扩展。在测试步骤的包含断言中,标准属性扩展适用,${JDBC Request Name#Foo}工作 - 成功而不是“成功”。相反,${JDBC Request Name#Whatever}按预期失败。

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

<强>更新

虽然对标准属性扩展的更改是正确的,但对于JDBC Request测试步骤之前的Property Transfer测试步骤没有将任何内容转移到属性Foo的情况,仅此更改仍然不足。

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

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

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