如何迭代SoapUI中的2个数据源专业版

问题描述:

目标:迭代2个数据源以更新“断言属性相等”Groovy脚本中的属性。如何迭代SoapUI中的2个数据源专业版

问题:测试用例只遍历“GetAppointmentInfo-> Properties”数据源中的行。来自“Stratus_ODS->属性”数据源的属性停留在数据源的第一行,并且不会随着测试用例循环而更新。

图片测试用例这里(对不起,需要10个代表把图片内联): http://imgur.com/DYMbIf3

测试用例步骤和说明:

  1. REST请求 “开始获取密钥” - 使用第二个请求所需的安全密钥进行响应

  2. Property Transfer“Key - > GetAppointmentInfo” - 将安全密钥传输到GetAppointmentInfo Req uest

  3. REST请求 “GetAppointmentInfo” - 响应与XML约会

  4. 数据源的名单 “GetAppointmentInfo - >属性” - 源 “GetAppointmentInfo” 响应,存储预约号的列名为“ApptNum财产”。约会号码是[100,101,102,103,104]

  5. DataSource“Stratus_ODS - >属性” - 源是SQL Server数据库中的表,它将一列约会号存储为名为“SQL_ApptNum”的属性。约会数字是[100,101,102,103,104]

  6. Groovy脚本步骤 “断言属性是相等的”

    def ApptNum = context.expand('${GetAppointmentInfo->Properties#ApptNum}') 
    def SQL_ApptNum = context.expand('${Stratus_ODS->Properties#SQL_ApptNum}') 
    assert ApptNum == SQL_AptNum 
    
  7. DataSource的循环 - 来源:步骤4 “GetAppointmentInfo - >属性” &目标:步骤6“断言属性是相等的”

断言传递第一次迭代时:

ApptNum = 100 & SQL_ApptNum = 100

断言上第二次迭代时失败:

ApptNum = 101 & SQL_ApptNum = 100

+0

我没有SOAPUI PRO版本,我不能使用'Data Source'测试步骤,但是您是否检查'Restart On Run'属性是否设置在'Stratus_ODS'的'Data Source'选项中 - >属性'测试步骤?似乎它已设置,因为每次迭代都使用第一个结果,因为它可能每次都执行查询,我认为如果您需要描述的行为,则此属性必须未设置。 – albciff 2014-10-07 08:53:21

+0

您有**两个** DataSource步骤,并且只有**一个** DataSource循环步骤? – SiKing 2014-10-07 14:52:57

+0

@albciff我在两个DataSources上都选中了“在运行步骤时重新启动数据源”。 – MattJ 2014-10-07 15:18:18

听起来像您的测试设计是有缺陷的。你仍然缺少一些信息,所以以下只是我最好的猜测!

方法是这样的:

  1. “开始获取密钥”
  2. 你也许可以结合“键 - > GetAppointmentInfo”和“GetAppointmentInfo”进了一步,但我会查看详情那里发生了什么。现在让他们保持原样。
  3. “GetAppointmentInfo - >属性”
  4. “Stratus_ODS - >属性” 这是你的问题的根源!将其更改为JDBC步骤,并且您将不得不制作SQL语句以从数据库中逐个提取一个值。再次,我不知道你的应用程序的细节;与您的db开发人员交谈。
  5. “断言属性相等”您可以将其作为脚本断言合并到步骤4中,但如果您对此更加适应,请将其保留。
  6. “GetAppointmentInfo - > Properties”返回到您的DataSource(上面的步骤3),定位紧随其后的步骤。
+0

我将步骤4“GetAppointmentInfo - > Properties”中的ApptNum属性添加到我的第5步“Stratus_ODS - >属性”DataSource DataConnection(不需要为此更改为JDBC)的SQL查询中的WHERE子句中。然后我按照第6步中所述添加并指导了DataSource循环。非常感谢! – MattJ 2014-10-07 19:45:14