如何在SoapUI Pro中迭代2个DataSource

时间:2014-10-07 02:10:04

标签: xml groovy automation soapui

目标:遍历2个DataSources以更新“Assert Properties are Equal”Groovy脚本中的属性。

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

此处的测试案例图片(抱歉,需要10个代码才能将图片内联): http://imgur.com/DYMbIf3

测试用例步骤和说明:

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

  2. Property Transfer“Key - > GetAppointmentInfo” - 将安全密钥转移到GetAppointmentInfo请求

  3. REST请求“GetAppointmentInfo” - 以XML格式的约会列表进行响应

  4. DataSource“GetAppointmentInfo - > Properties” - 源“GetAppointmentInfo”响应,将一列约会号码存储为名为“ApptNum”的属性。预约编号为[100,101,102,103,104]

  5. DataSource“Stratus_ODS - > Properties” - 源是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 - > Properties”&目标:步骤6“断言属性相等”

  8. 断言在第一次迭代时传递:

    ApptNum = 100& SQL_ApptNum = 100

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

    ApptNum = 101& SQL_ApptNum = 100

1 个答案:

答案 0 :(得分:0)

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

接近这样的事情:

  1. "开始获取密钥"
  2. 你可能会结合" Key - > GetAppointmentInfo"和" GetAppointmentInfo"迈进一步,但我必须看到那里发生的事情的细节。现在请保持原样。
  3. " GetAppointmentInfo - >属性"
  4. " Stratus_ODS - >属性" 这是您问题的根源!将其更改为JDBC步骤,您必须制作一个SQL语句,以便从数据库中一次提取一个值。同样,我不知道你的应用程序的细节;与您的数据库开发人员交流。
  5. "断言属性是等于"您可以将此作为脚本断言合并到第4步中,但如果您对此更熟悉,请将其保留。
  6. " GetAppointmentInfo - >属性"返回到您的DataSource(上面的步骤3),紧跟在后面的步骤。