Как запустить один файл функции, следующий за другим файлом функции? - PullRequest
0 голосов
/ 05 июля 2018

У меня есть 2 файла функций, т.е. userstoryteacher1.feature и userstoryteacher2.feature. В основном у userstoryteacher1.feature есть шаги, где есть 2 тега @Dev и @QA.

Я хочу запустить файлы объектов следующим образом: -

  1. Если я передам @Dev, @tagteacher в классе Cucumber, то он должен выбрать URL-адрес устройства, чтобы открыть страницу с ссылками.

  2. Если я передам @QA, @tagteacher в классе Cucumber, тогда он должен выбрать 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 голосов
/ 05 июля 2018

Cucumber разработан так, что вы не можете связать сценарии или файлы объектов вместе. Каждый сценарий должен выполняться как независимый «тест», который начинается с начала.

Программирование с помощью файлов объектов - это ужасный анти-паттерн. Вместо этого перенесите программирование в слой определения шагов, или, что еще лучше, в помощников, которые используют определения шагов.

Если вы хотите извлечь максимум пользы от огурца, вам нужно использовать его, чтобы выразить только то, ЧТО делается, и ПОЧЕМУ это важно. Из вашего примера это похоже на то, как учителя заполняют свои расписания, поэтому ваши сценарии должны быть такими, как

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

Что основывается на предыдущих сценариях регистрации новых учителей. Если вы следуете этому шаблону, у вас могут быть простые сценарии с одним данным, которые выполняют огромные объемы установки, используя только один вызов метода. Это намного лучше, чем связывать несколько файлов функций вместе!

...