每次测试运行时编写带有唯一数据的 Cucumber 特征文件

Posted

技术标签:

【中文标题】每次测试运行时编写带有唯一数据的 Cucumber 特征文件【英文标题】:Writing Cucumber feature file with passing unique data every time test runs 【发布时间】:2018-03-11 13:56:11 【问题描述】:

我想编写一个功能文件,每次运行测试时都会传递唯一的数据。

Feature : - Create Facebook account

Scenario Outline: Create new account
    Given I go to facebook.com
    And I enter "First_Name>Last_name>DOB>Password>ConfirmPassword>Email>ConfirmEmail>"
    When I click on Create account
    Then I should get welcome to facebook message

Examples:
    | First_Name | Last_name | DOB        | Password | ConfirmPassword | Email        | ConfirmEmail |
    | Gary       | English   | 11/01/1989 | test123  | test123         | gar@mail.com | gar@mail.com |
    | Barry      | Smith     | 01/11/1982 | test123  | test123         | bar@mail.com | bar@mail.com |

我的问题是: 当我运行上述场景时,将创建 2 个 Facebook 帐户。当我每天早上提交代码并运行测试时,除非我每次都更改电子邮件以使它们独一无二,否则它们将失败。因为任何系统都会检查提供的电子邮件地址是否已经存在。

如果我不必每次都更改我的创建帐户功能文件数据,我该如何解决这个问题。

我希望我们当中有人遇到过这样的问题。

注意:我无法打开和关闭 ,因为这些括号之间的文本不可见,因此我只保留了 1 个括号

【问题讨论】:

【参考方案1】:

那就不要放在功能文件里了。在 step 方法中构建一个随机化器。您还应该更改功能文件以反映这一点。

And I enter "<First_Name>, <Last_name>, <DOB>, <Password>, <ConfirmPassword>, <Email>, <ConfirmEmail>"
And uses a random email

或者,如果您不想构建单独的条件,则使用关键字来表示值应该是随机的(我的首选方法):

|Barry|Smith|01/11/1982|test123|test123|[random]|[random]|

因此,当传递给注册方法时,如果该值未验证为合法的电子邮件地址(您正在进行验证,对吗?),请检查 [random] 关键字。如果存在,则构建一个随机有效的电子邮件。

【讨论】:

以上是关于每次测试运行时编写带有唯一数据的 Cucumber 特征文件的主要内容,如果未能解决你的问题,请参考以下文章

测试使用带有 Cucumber 的设计令牌可验证模块的 JSON API

当使用带有 REST 的 Cucumber 时,我不断收到未决异常

Maven Surefire 插件没有重新运行失败的 Cucumber 测试

在 RubyMine 中运行 Cucumber 测试场景时出错

所有黄瓜测试后运行

Cucumber测试驱动开发