【问题标题】:Pass POJOs in Cucumber Example table在 Cucumber 示例表中传递 POJO
【发布时间】:2020-01-30 01:25:00
【问题描述】:

说明: 作为一名测试开发人员,我想使用一个场景来测试 3 个不同的环境。

简化场景示例:

  @smoke
  Scenario: Login to the login page and assert that the user is logged in
    Given User navigates to the page
    And User enters valid login credentials
    When User clicks on the login button
    Then Landing page can be seen

数据(这些是从属性文件中获取的 - 转换为 POJO):

Env1.class
url = www.environment1.com
username = john
password = doe1

Env2.class
url = www.environment2.com
username = john2
password = doe2

Env2.class
url = www.environment3.com
username = john3
password = doe3

测试设置

  1. 每个环境都有自己的测试运行器(故障安全)
  2. 每个环境并行运行。
  3. 测试运行并通过~mvn clean verify 构建
  4. 测试取决于属性文件,因为环境可能会发生变化。

可能的解决方案: 有没有办法在示例表中传递 POJO?还是 Cucumber 的数据表?

我是 BDD 和 Cucumber 的新手 - 任何帮助都会很棒。谢谢。

TLDR:有没有办法在 Cucumber 的示例表中传递 Prop 文件变量?

| URL | Username | Password | 
| env1.getUrl | env1.getUsername | env1.getPassword |

原来如此

 @smoke
  Scenario: Login to the login page and assert that the user is logged in
    Given User navigates to the page <URL>
    And User enters valid login credentials <Username> and <Password>
    When User clicks on the login button
    Then Landing page can be seen

【问题讨论】:

  • 当你说每个环境都有自己的测试运行器时,环境是如何传递给运行器的?是为所有三个环境运行相同场景的 Maven 吗?有没有办法在 Step Definition 代码中知道运行时的当前环境?
  • 我在每个环境中使用一个 prop 文件。每个跑步者都是通过verify触发的

标签: selenium cucumber bdd cucumber-java


【解决方案1】:

您可以使用场景大纲来运行相同的场景,每次运行时使用不同的数据。但它不会是平行的。它是顺序的。功能文件是,

  @smoke
  Scenario Outline: Login to the login page and assert that the user is logged in
    Given User navigates to the page <URL>
    And User enters valid login credentials <Username> and <Password>
    When User clicks on the login button
    Then Landing page can be seen
  Example:
  |URL                 |UserName|Passowrd|
  |www.environment1.com|john1   |doe1    |
  |www.environment2.com|john2   |doe2    |    
  |www.environment2.com|john3   |doe3    |

您可以使用单个运行器类。无需使用属性文件或 pojo 类。

【讨论】:

  • 是的 - 可以,但我需要并行触发它。
【解决方案2】:

您可以将cucumber extension 用于BDD2。通过使用它,您可以拥有外部示例,也可以使用示例中的属性,如下所示:

| URL | Username | Password | 
| ${env1.getUrl} | {env1.getUsername} | ${env1.getPassword} |

您也可以使用CSVXML 数据提供程序。

为了使用 pojo,您需要修改步骤定义以接受 DataTable 或 POJO 作为参数。当接受 POJO 作为参数时,您需要编写转换器。

当您使用cucumber extension 时,您还可以使用QAFTestStep,它无需额外努力即可接受POJO。在这里你可以找到step examplesfeature file

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-17
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多