带有多行参数的 Cucumber/Gherkin 数据表流

问题描述 投票:0回答:1

我对使用多行参数时如何在前提条件之外解析数据表信息感到有点困惑。简而言之,我有一个发送 iduser 变量的函数,服务器将响应用户变量及其状态(在线/离线)。这是一个例子:

Given that the user has access to the server

When sending a server_info request with the following parameters:
"""
id = <id>
user = <user>
"""
| id     | user  |
| 0      | userA |
| 1      | userB |
| 2      | userC |

Then the server will return the <user> and status

但是同样也可以写成:

Given that the user has access to the server

When sending a server_info request with the following parameters:
"""
id = <id>
user = <user>
"""
Then the server will return the <user> and status
   Examples:
   | id     | user  |
   | 0      | userA |
   | 1      | userB |
   | 2      | userC |

我的理解是,在第一个示例中,流程是这样的:

  1. 你发送了 3 个连续的 server_info 请求
  2. 只有在所有 3 个都发送后,您才能验证它们
  3. 场景只运行一次

而在第二个示例中,流程是:

  1. 你发送一个 server_info 请求
  2. 您验证该特定请求
  3. 场景再运行两次,共运行三次

我问的原因是因为服务器会在屏幕上响应一对变量,但是任何新的请求都会覆盖以前的请求。简而言之,以前的值将不再显示在屏幕上,只会显示最近的值,因此我不得不在发送新请求之前验证屏幕上的内容。如果我对第一个示例的理解是正确的,那么在 When 循环结束时,我将仅验证最后一对(id = 2 和 user = userC)的响应,因为前两个已被覆盖。如果这是真的,那么我不应该使用数据表,而是我需要使用带有场景大纲的第二个示例来验证所有对。

所以我想问的是,我对流程的理解正确吗?我知道如果您在实施阶段存储变量可以避免这种情况,但我特别想知道流程。感谢所有帮助!

cucumber gherkin
1个回答
0
投票

希望我能正确理解您的问题。

如果你像这样使用:

Given User does this
|opt1|opt1-1|
|opt2|opt2-2|

这只是一个数据表的步骤,它很有用,例如,当您填写表格时(您提供一些数据并同时填写所有数据)

场景大纲中使用了示例。如果您知道的话,其逻辑与 DataProvider 非常相似。 因此,这意味着该场景将与表中的行数同时执行。如果 2 行 - 整个场景将执行两次。第一次它会选择第一行的值,下一次 - 第二行等等。

© www.soinside.com 2019 - 2024. All rights reserved.