【问题标题】:cucumber data table multiple seperate iteration黄瓜数据表多次单独迭代
【发布时间】:2015-10-19 11:15:13
【问题描述】:

在以下功能文件中,我的要求是每三个字段添加一个doc_id。为了澄清,我想检查每个doc_idProductNamemanufacturerNameRevisionDate。我想出了以下方法,但我认为这绝对不是首选方法。谁能给我一个更好的方法。

Background:
    Given I am in landigpage page after login

Scenario Outline: valid
    When I enter "<doc_id>"
    And I click the search go button
    Then I should get in vault search page
    And Search result of "<field>" should match with database

Examples:
    | doc_id | field            |
    | 15     | ProductName      |
    | 15     | ManufacturerName |
    | 15     | RevisionDate     |

Examples:
    | doc_id | field            |
    | 16     | ProductName      |
    | 16     | ManufacturerName |
    | 16     | RevisionDate     | 

【问题讨论】:

    标签: selenium automation cucumber cucumber-jvm cucumber-java


    【解决方案1】:

    您可以使用单个示例表:

    Background:
        Given I am in landigpage page after login
    
    Scenario Outline: valid
        When I enter "<doc_id>"
        And I click the search go button
        Then I should get in vault search page
        And Search result of "<field>" should match with database
    
    Examples:
        | doc_id | field            |
        | 15     | ProductName      |
        | 15     | ManufacturerName |
        | 15     | RevisionDate     |
        | 16     | ProductName      |
        | 16     | ManufacturerName |
        | 16     | RevisionDate     | 
    

    我看不到任何其他方式可以按照您需要的方式传递参数。这就是我不喜欢黄瓜的地方。它不是那么灵活。

    【讨论】:

      【解决方案2】:
      Bacckground:
        Given I am in landigpage page after login
      
      Scenario Outline: valid
        When I enter "<doc_id>"
        And I click the search go button
        Then I should get in vault search page
        And the search results should match the database
      Examples:
        | doc_id |
        | 15     |
        | 16     |
      

      并使其工作:

      When /^I enter "<\w+>"$/ do | doc_id |
        @doc_id = doc_id
        ...
      end
      
      Then "the search results should match the database" do
        db_results = db.find(@doc_id)  # or something similar
        ... # compare db_results to actual results
      end
      

      这仍然有点糟糕,因为你的 Gherkin 中有 doc_id,你依赖于预填充的数据库并且你有一个场景大纲;但是,嘿,让我们把它留给其他问题吧:)

      【讨论】:

        【解决方案3】:

        嗨,我猜你们混淆了Data Tables 和场景大纲。 上面的解决方案是:

        Background:
        Given I am in landingpage page after login
        
        Scenario Outline: valid
        When I enter "<doc_id>"
        And I select to navigate to search page 
        Then Search result of field should match with database
        | ProductName      |
        | ManufacturerName |
        | RevisionDate     |
        
        Examples:
          | doc_id |
          | 15     |
          | 16     |
        

        表格可以轻松转换为您可以在步骤中使用的列表或地图。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多