cucumber - cucumber 场景如何根据环境实现不同的数据

标签 cucumber cucumber-jvm gherkin

我在不同环境中执行 cucumber-jvm 场景时遇到问题。包含在场景特征文件中的数据属于一个环境。为了在不同的环境中执行场景,我需要根据要执行的环境更新特征文件中的数据。

例如,在以下场景中,我将搜索条件包含在功能文件中。搜索条件适用于 QA 环境。

Scenario: search user with valid criteria

Given user navigated to login page
And clicked search link
When searched by providing search criteria
|fname1  |lname1  |address1|address2|city1|state1|58884|
Then verify the results displayed 

它在 QA 环境中运行良好。但是要在其他环境(UAT,stage..)中执行相同的场景,我需要根据这些环境中的数据修改特征文件中的搜索条件。

我正在考虑在不同环境的属性文件中维护场景的数据,并根据执行环境读取它。

如果数据在属性文件中,场景将如下所示。而不是搜索条件,我将给出 propertyName:

Scenario: search user with valid criteria

Given user navigated to login page
And clicked search link
When searched by providing search criteria
|validSearchCriteria|
Then verify the results displayed 

有没有其他方法可以维护所有环境的场景数据并根据场景正在执行的环境使用它?请告诉我。

谢谢

最佳答案

我明白这个问题,但我不太明白这个例子,所以请允许我提供我自己的例子来说明如何解决这个问题。

假设我们测试一个图书馆管理软件,并且在我们的开发环境中,我们的测试数据有 3 本书 Leo Tolstoy。

我们可以有这样的测试用例:

Scenario: Search by Author
    When I search for "Leo Tolstoy" books
    Then I should get result "3"

现在让我们假设我们创建了 QA 测试环境,并且在该环境中我们有 5 本书 Leo Tolstoy。问题是我们如何修改我们的测试用例,使其在两种环境中都能正常工作?

一种方法是使用标签。例如:

@dev_env
Scenario: Search by Author
    When I search for "Leo Tolstoy" books
    Then I should get result "3"

@qa_env
Scenario: Search by Author
    When I search for "Leo Tolstoy" books
    Then I should get result "5"

这里的问题是我们有很多代码重复。我们可以通过使用 Scenario Outline 来解决这个问题,如下所示:

Scenario Outline: Search by Author
    When I search for "Leo Tolstoy"
    Then I should see "<number_of_books>" books

@qa_env
Examples:
| number_of_books |
| 5               |

@dev_env
Examples:
| number_of_books |
| 3               |

现在当你执行测试时,你应该在开发环境中使用@dev_env标签,在QA环境中使用@qa_env。

我很高兴听到解决此问题的其他方法。

关于cucumber - cucumber 场景如何根据环境实现不同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29713935/

相关文章:

cucumber - 将 cucumber 与 jruby 一起使用

java - 基于maven配置文件的 cucumber 标签

java - 使用 gradle 从 cucumber 测试中获取 jacoco 报告

java - cucumber-jvm 版本 3 将简单表的设计模式替换为 Map<String,String> 操作

java - 如何在钩子(Hook)之前获取所有 cucumber 场景步骤?

java - 如何使用 Gradle 并行运行 Cucumber jvm 测试场景?

cucumber - 小 cucumber 和 cucumber 中的功能和场景是什么?

javascript - 解决 Protractor 中的 cucumber promise

ruby - 如何使用 cucumber 在场景之间共享状态

java - Cucumber:如何定义一个仅包含字母的字符串作为给定