我对使用多行参数时如何在前提条件之外解析数据表信息感到有点困惑。简而言之,我有一个发送 id 和 user 变量的函数,服务器将响应用户变量及其状态(在线/离线)。这是一个例子:
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 |
我的理解是,在第一个示例中,流程是这样的:
而在第二个示例中,流程是:
我问的原因是因为服务器会在屏幕上响应一对变量,但是任何新的请求都会覆盖以前的请求。简而言之,以前的值将不再显示在屏幕上,只会显示最近的值,因此我不得不在发送新请求之前验证屏幕上的内容。如果我对第一个示例的理解是正确的,那么在 When 循环结束时,我将仅验证最后一对(id = 2 和 user = userC)的响应,因为前两个已被覆盖。如果这是真的,那么我不应该使用数据表,而是我需要使用带有场景大纲的第二个示例来验证所有对。
所以我想问的是,我对流程的理解正确吗?我知道如果您在实施阶段存储变量可以避免这种情况,但我特别想知道流程。感谢所有帮助!
希望我能正确理解您的问题。
如果你像这样使用:
Given User does this
|opt1|opt1-1|
|opt2|opt2-2|
这只是一个数据表的步骤,它很有用,例如,当您填写表格时(您提供一些数据并同时填写所有数据)
场景大纲中使用了示例。如果您知道的话,其逻辑与 DataProvider 非常相似。 因此,这意味着该场景将与表中的行数同时执行。如果 2 行 - 整个场景将执行两次。第一次它会选择第一行的值,下一次 - 第二行等等。