在SoapUI中,我有一个JDBC测试步骤,它返回以下数据:
<Results>
<ResultSet fetchSize="128">
<Row rowNumber="1">
<ID>1</ID>
<NAME>TestName1</NAME>
<DESCRIPTION/>
<TYPE>Bool</TYPE>
<ISPRODUCTTAG>true</ISPRODUCTTAG>
<ISLOCATIONTAG>false</ISLOCATIONTAG>
<SUBSECTION>Default Sub Section</SUBSECTION>
<SECTION>Default Section</SECTION>
<SUBGROUP>Default Sub Group</SUBGROUP>
<GROUP>Default Group</GROUP>
</Row>
<Row rowNumber="2">
<ID>2</ID>
<NAME>TestName2</NAME>
<DESCRIPTION/>
<TYPE>Bool</TYPE>
<ISPRODUCTTAG>true</ISPRODUCTTAG>
<ISLOCATIONTAG>false</ISLOCATIONTAG>
<SUBSECTION>Default Sub Section</SUBSECTION>
<SECTION>Default Section</SECTION>
<SUBGROUP>Default Sub Group</SUBGROUP>
<GROUP>Default Group</GROUP>
</Row>
</Row>
</ResultSet>
我有一个包含以下数据的REST API XML响应:
<ArrayOfTagInfo>
<TagInfo id="1" name="TestName1" type="Bool" isProductTag="true" isLocationTag="false" subsection="Default Sub Section" section="Default Section" subgroup="Default Sub Group" group="Default Group"/>
<TagInfo id="2" name="TestName2" type="Bool" isProductTag="true" isLocationTag="false" subsection="Default Sub Section" section="Default Section" subgroup="Default Sub Group" group="Default Group"/>
</ArrayOfTagInfo>
如果可能的话,我希望能够使用groovy数组来比较(Assert)数据库值和响应值(响应可以是XML或JSON格式,具体取决于请求接受头),因为从数据库返回的数据可能非常大。
有人能帮忙吗?
2条答案
按热度按时间rqcrx0a61#
您可以使用下列测试步骤来设计测试用例:
groovy脚本步骤中的想法/sudo代码是
下面是groovy脚本:
在上面的代码中,第3行不匹配,因此assert将抛出以下错误:
捕获到:java.lang。Assert错误:比较失败。表达式:(jdbcDataObjects == jsonDataObjects)。值:jdbcDataObjects = [默认组3,默认组,默认组],jsonDataObjects = [默认组,默认组,默认组] java.lang.Assert错误:比较失败。表达式:(jdbcDataObjects == jsonDataObjects)。值:在www.example.com上,jdbcDataObjects = [默认组3,默认组,默认组],jsonDataObjects = [默认组,默认组,默认组]So31472381.run(So31472381.groovy:104)
进程已结束,退出代码为1
如果删除了3rd(从两个响应中),则不会看到任何错误,这表示jdbc和json响应的比较成功。
请注意,
groovy script
在SoapUI
的免费版和专业版中都可用,因此此解决方案适用于SoapUI的两个版本。v7pvogib2#
如果您有SoapUI-Pro,那么您应该能够在没有Groovy的情况下完成所有这些任务。
1.进行REST调用以检索所有数据。
1.启动一个解析XML的DataSource step。
1.进行JDBC调用,以选择要验证的行的正确ID。在此处进行所有Assert。
1.循环回到#2。