2016-05-08 1 views
1

Я положил заявление отладочной печати в раздел огурца Background.Почему вывод из фона огурца показан только один раз?

С Background выполняется один раз для каждого сценария, который я ожидал увидеть на выходе из Background один раз для каждого сценария. Однако вывод показан только один раз. Зачем?

Вот простой пример, который иллюстрирует мой вопрос:

калькулятор/функции/adding.feature:

Feature: Adding 

Background: 
    Given calculator is ready 

Scenario: Add two numbers 
    Given the input "2" and "2" 
    When the calculator is run 
    Then the output should be "4" 

Scenario: Add another two numbers 
    Given the input "2" and "3" 
    When the calculator is run 
    Then the output should be "5" 

калькулятор/функции/step_definitions/calculator_steps.rb:

counter = 0 

Given(/^calculator is ready$/) do 
    puts "*** background ***" 
    counter += 1 
end 

Given(/^the input "([^"]*)" and "([^"]*)"$/) do |x1, x2| 
    @x1 = x1 
    @x2 = x2 
end 

When(/^the calculator is run$/) do 
    @output = `ruby calc.rb #{@x1} #{@x2}` 
end 

Then(/^the output should be "([^"]*)"$/) do |expected_output| 
    expect(@output).to eq(expected_output) 
    puts "counter=#{counter}" 
end 

calculator/calc.rb:

x1 = ARGV[0].to_i 
x2 = ARGV[1].to_i 

print ("#{x1+x2}") 

Вот выход, когда сценарии выполняются:

$ cucumber 
Feature: Adding 

    Background:     # features/adding.feature:3 
    Given calculator is ready # features/step_definitions/calculator_steps.rb:3 
    *** background *** 

    Scenario: Add two numbers  # features/adding.feature:6 
    Given the input "2" and "2" # features/step_definitions/calculator_steps.rb:8  
    When the calculator is run # features/step_definitions/calculator_steps.rb:13 
    Then the output should be "4" # features/step_definitions/calculator_steps.rb:17 
     counter=1 

    Scenario: Add another two numbers # features/adding.feature:11 
    Given the input "2" and "3"  # features/step_definitions/calculator_steps.rb:8 
    When the calculator is run  # features/step_definitions/calculator_steps.rb:13 
    Then the output should be "5" # features/step_definitions/calculator_steps.rb:17 
     counter=2 

2 scenarios (2 passed) 
8 steps (8 passed) 
0m0.094s 

Я ожидал увидеть линию *** background *** дважды (потому что Background выполняется дважды), но он показан только один раз. Зачем?

ответ

1

Сообщения напечатаны в огурцах Background. Шаги печатаются только один раз, потому что Cucumber фиксирует стандартный вывод, когда он выполняет шаг и печатает его под контролем огурца. Сообщения, напечатанные в шагах Background, печатаются вместе с именами шагов: только один раз, в начале вывода.

Путь к просмотру печатных сообщений при каждом проходе Background - это то же самое, что и каждый раз, когда запускается Background. Для этого уже был вопрос и ответ, но он не работает для текущей версии Cucumber (у меня 2.3.3), поэтому я написал новый ответ на этот вопрос, который показывает how to print everything that Background prints before every scenario.

+0

Спасибо Дэйв, решение, которое вы описали для Cucumber 2.3.3, работает для меня, и поскольку это обычно необходимо для целей отладки, это не является проблемой для локального изменения драгоценного камня. –

 Смежные вопросы

  • Нет связанных вопросов^_^