如何运行一个功能文件并跟随另一个功能文件?

时间:2018-07-05 08:17:31

标签: cucumber cucumber-java

我有2个功能文件,即userstoryteacher1.featureuserstoryteacher2.feature。基本上,userstoryteacher1.feature包含两个标签@Dev@QA的步骤。

我想通过以下方式运行功能文件:-

  1. 如果我在Cucumber类中通过了@Dev@tagteacher,那么它应该选择dev url来打开带凭据的页面。

  2. 如果我在黄瓜类中通过了@QA@tagteacher,那么它应该选择qa url来打开带有凭证的页面。

    import org.junit.runner.RunWith;
    import com.optum.synergy.common.ui.controller.WebController;
    import cucumber.api.CucumberOptions;
    import cucumber.api.SnippetType;
    import cucumber.api.junit.Cucumber;
    
    @RunWith(Cucumber.class)
    @CucumberOptions(
            plugin = { "json:target/test_results/cucumber.json"}, 
            features = { "src/main/resources/ui/features" },
         tags ={"@Dev,@tagteacher"},
            snippets = SnippetType.CAMELCASE
    
            )
    
    public class CucumberRunnerTest {
    
        public static void tearDown(){
            WebController.closeDeviceDriver();
        }
    }
    
    ---------------------------------------------------------------------------
    userstoryteacher1.feature file :-
    
    @TestStory
    Feature: Teachers timesheet need to be filled
      I want to use this template for my feature file
    
      Background: 
    
      Scenario Outline: Open Webpage
        Given User Open teacher application with given <ENDPOINT> 
        And   Login into application with given <USERNAME> and <PASSWORD>
        And User clicks on teacher submission link
    
        @DEV
        Examples: 
          | endpoint                       | USERNAME | PASSWORD    |
          | http://teachersheetdev.ggn.com | sdrdev| aknewdev|
    
    
    
        @QA
        Examples: 
          | endpoint                      | USERNAME | PASSWORD    |
          | http://teachersheetqa.ggn.com | sdrqa | aknewdev|
    -----------------------------------------------------------------------------
    userstoryteacher2.feature file :-
    
    Feature : I'm at the teachers page
    
    @tagteacher
    Scenario: Open app home page and click the button
    Given I'm at the teachersheet homepage
    When User clicks Add Task button
    Then User should see the tasks schedule
    

1 个答案:

答案 0 :(得分:1)

黄瓜的设计使您无法将场景或功能文件链接在一起。每个方案都应作为从头开始的独立“测试”来运行。

使用功能文件编程是一种可怕的反模式。而是将编程推入步骤定义层,或者更好地推入步骤定义使用的助手。

如果您想充分利用黄瓜,就需要使用它来表示正在做的事情及其重要性。从您的示例中可以看出,这似乎与教师填写时间表有关,因此您的情况应该是

Scenario: Fill in timesheet Given I am a teacher And I am logged in When I fill in my timesheet Then I should see my timesheet has been saved.

您可以在Givens中设置状态,并为创建的每个方案构建帮助程序方法,以便将来的方案可以轻松地设置状态。例如Given I am a teacher可能类似于

def 'Given I am a teacher' do
  teacher = create_new_teacher;
  register_teacher(teacher)
  return teacher
end

这是在以前的方案的基础上进行的,以注册新教师。如果您遵循这种模式,则可以使用一个简单的Given方法来实现简单的方案,只需使用一个方法调用即可进行大量的设置。这比将多个功能文件链接在一起要好得多!