【问题标题】:SpecFlow: To run feature file with multiple scenarios several times with different parametersSpecFlow:使用不同的参数多次运行具有多个场景的特征文件
【发布时间】:2020-05-03 13:28:52
【问题描述】:

我想知道为什么我们可以使用不同的参数多次运行场景,但不能使用不同的参数运行整个功能文件。

我们的特征文件由很多场景组成,特征文件对应于测试用例,但是当我们需要运行相同的特征文件,但具有不同的参数时,必须复制整个特征文件......有没有参数化整个特征文件的可能性?

【问题讨论】:

  • 你能发布其中一个场景吗?为什么不能使用情景大纲?
  • 因为我们有特征文件,例如40 个场景,所有场景都是一个测试用例,应该同时为许多场景定义参数。
  • 每个场景都应该是一个测试用例。每个场景都应该可以单独执行。如果这不是您设置的方式,那么您就没有完全按照预期目的使用场景。
  • 在这种情况下,它们会太长并且不方便人类阅读。你是什​​么意思“在它自己的”。它自己的实际可执行文件。但是我们有很多场景的测试用例(场景是测试用例的一个步骤),而且场景可以在不同的 .feature 文件中重用。它与您的概念有何矛盾?
  • 那么,你的意思是说,比如用户注册的场景必须在用户写博文的场景之前运行,因为你只是注册用户写博文吗?

标签: specflow


【解决方案1】:

我不知道你是否知道情景大纲。

Scenario Outline 关键字可用于运行相同的 Scenario 多次,具有不同的值组合


复制和粘贴场景以使用不同的值很快变得乏味和重复,如下例所示:

Scenario: Successful Login with Valid Credentials
   Given User is at the Home Page
   And Navigate to LogIn Page
   When User enter "testuser_1" and "Test@123"
   And Click on the LogIn button
   Then Successful LogIN message should display

Scenario: Successful Login with Valid Credentials
   Given User is at the Home Page
   And Navigate to LogIn Page
   When User enter "testuser_2" and "Test@153"
   And Click on the LogIn button
   Then Successful LogIN message should display

我们可以将这两个相似的场景合并成一个场景大纲。

场景大纲允许我们通过使用带有 - 分隔参数的模板更简洁地表达这些场景:

Scenario Outline: Successful Login with Valid Credentials
   Given User is at the Home Page
   And Navigate to LogIn Page
   When User enter <username> and <password>
   And Click on the LogIn button
   Then Successful LogIN message should display
Examples:
| username   | password |
| testuser_1 | Test@123 |
| testuser_2 | Test@153 |

场景大纲必须包含示例(或场景)部分。它的步骤被解释为一个从不直接运行的模板。相反,场景大纲对其下方示例部分中的每一行运行一次(不包括第一个标题行)。

这些步骤可以使用 分隔参数来引用示例表中的标题。在尝试将步骤与步骤定义进行匹配之前,Cucumber 将用表中的值替换这些参数。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-21
  • 1970-01-01
  • 2013-12-20
  • 2015-11-23
相关资源
最近更新 更多