您可以通过从一个测试中提取值,然后在另一个测试中使用它们来参数化测试(用于数据驱动测试)。这是通过以下工具实现的:

例如,如果您想用测试 1 响应的 id 值参数化测试 3 的一个请求值,那么可以将该字段设置为参数化...

然后使用数据源向导指示您想要使用来自测试 1 的 id 元素的值(它将存储在自动添加到测试套件的 XML 数据库工具中)。

下面的部分解释了在测试之间传递值的两种不同策略。除了这个 test-to-test 值传递外,还可以通过以下方式传递值:

  • 通过变量:变量可用于参数化工具编辑器中所有或部分文本字段值。例如,文本字段可以引用当前套件定义的环境变量、数据源列、数据库列或变量。详情请参阅使用变量参数化工具
  • 通过脚本:这主要用于当您需要传递一个类型不是字符串的对象时。您只能通过脚本访问这些值。这是使用 com.parasoft.api.Context get(String) 和 put(String, Object) 实现的。  详情请参阅扩展和脚本基础

将值从一个测试传递到另一个测试

Parasoft SOAtest 支持两种实现测试链接的主要方法(即,从一个测试中提取值,然后在随后的测试中使用):

使用数据库 - 捕获单次运行的值

当需要捕获来自单个测试执行的值以便后续重用时,此方法用于简单的情况。 

例如,可以配置测试银行 Web 服务交易的测试套件。该测试套件的测试 1 可以使用用户 ID 登录到服务中,然后 SOAP 响应将向测试 1 返回一个会话 ID。可以将该测试套件的测试 2 配置为使用测试 1 的会话 ID,以执行交易。可以在测试套件中配置任何测试,以使用 SOAP 响应参数作为 SOAP 请求参数。

本例的测试场景可能如下所示:

  • 测试 1: 登录并检索 ID
    • XML 数据库:提取用户 ID
  • 测试 2: 使用 ID 调用服务 1
  • 测试 3: 使用 ID 调用服务 2
  • ...

在本例中,我们假设每次执行测试套件时,在整个场景中都使用一个不同的 Id,但是对于每个场景的运行,它都是一个单一的 ID。

需要注意的是,同样的原则适用于所有 SOAtest 的数据库工具(XML、浏览器、Header、JSON、对象、文本)。您可以将单个值提取到任何这些数据库工具中,然后在后续测试中使用它(作为参数化的值,以及通过使用 com.para-soft.api.ScriptingContext.getValue(String, String) 编写脚本)。提取的值存储为字符串。  

该功能的设计目的在于适应广泛的定制需求;上面给出的示例只是一个示例应用程序。

教程

有关此功能如何工作的逐步示例,请参阅存储用于后续测试的结果

使用具有可写数据源的数据库 - 捕获值以在多次运行中进行迭代

当您需要提取一个未知计数的值列表,然后让测试或测试套件遍历已提取的每个值时,这种情况非常有用。假设以下测试场景:

  • 数据源:
    • 可写:捕获的用户 ID
  • Set-Up 测试:获取用户 ID
    • XML 数据库:提取用户 Ids 并将其写入可写数据源
  • 测试 1: 使用捕获的 ID 调用服务 1(使用“捕获的用户 ID”参数化)
  • 测试 2: 使用捕获的 ID 调用服务 2(使用“捕获的用户 ID”参数化)

在这种情况下,“获取用户 ID”测试假设一个服务返回一个用户 ID 列表(一个序列),并且每个用户 ID 都被提取并写入所需的可写数据源列。用户 ID 的确切数量可以是未知的,也可以是可变的。“获取用户 ID”测试执行和可写数据来源填充值之后,该场景继续到测试套件的其余部分(测试 1 和测试 2),并且后续测试用可写数据源参数化(例如,通过选择适当的数据源,然后对该数据源中的字段和列进行参数化)。这意味着测试可以遍历它,并使用“获取用户 ID”写入其中的所有 ID。换句话说,它们将对检索到的每个 ID 执行。

如果生成值的测试一次检索一个值,但是在一个数据源上迭代,并将提取的值存储到一个可写数据源中,则可写数据源非常有用。在这种情况下,一个示例测试场景可能是:

  • 数据源:
    • 表格:用户名
    • 可写:捕获的用户 ID
  • Set-Up 测试:获取和存储用户 ID(用户名参数化)
    • XML 数据库:提取用户 ID 并将其写入可写数据源
  • 测试 1: 使用捕获的 ID 调用服务 1(使用“捕获的用户 ID”参数化)
  • 测试 2: 使用捕获的 ID 调用服务 2(使用“捕获的用户 ID”参数化)

在本例中,“获取和存储用户 ID”测试步骤将运行多次:每次运行“用户名”数据源提供的每个用户名。对于每次运行,它都将向“捕获的用户 ID”数据源写入一个用户 ID。现在“捕获的用户 ID”可写数据源被填充(使用用户 ID),测试套件的其余部分将使用这些 ID 执行测试 1 和测试 2。

有关可写数据源的详细信息,请参阅配置可编写数据源

例如,如果您想用测试 1 响应的 id 值参数化测试 3 的一个请求值,那么可以将该字段设置为参数化...

然后使用数据源向导指示要使用哪个元素的值。您还可以手动配置要存储到数据库或可写数据源的值,然后将响应与已保存的响应进行参数化。

除了这个 tool-to-tool 传递外,还可以通过以下方式传递值:

  • 通过变量:变量可用于参数化工具编辑器中所有或部分文本字段值。例如,文本字段可以引用当前套件定义的环境变量、数据源列、数据库列或变量。详情请参阅使用变量参数化工具
  • 通过脚本:这主要用于当您需要传递一个类型不是字符串的对象时。您只能通过脚本访问这些值。这是使用 com.parasoft.api.Context get(String) 和 put(String, Object) 实现的。详情请参阅扩展和脚本基础

通用指南

以下为通用指南:

  • 如果作为场景的一部分只需从消息中提取内容一次,可单独使用数据库。
  • 如果提取值列表,然后让另一个测试迭代并逐个使用这些值,可使用具有可写数据源的 XML 数据库。

  • No labels