Запуск функции огурца несколько раз - PullRequest
6 голосов
/ 16 июня 2010

Я пытаюсь запустить функцию огурца несколько раз (то есть 500 раз).Есть ли способ сделать это, кроме того, что мне приходится вводить одну и ту же команду каждый раз?Я предполагаю, что это можно сделать с помощью Rake?Я не эксперт в использовании граблей или огурцов.

Буду признателен за вашу помощь.

Спасибо

Ответы [ 5 ]

8 голосов
/ 16 июня 2010
ruby -e '500.times { `cucumber` }'
5 голосов
/ 12 июня 2011

В вашем файле рейка:

require 'rubygems'
require 'cucumber'
require 'cucumber/rake/task'

cuke_task = Cucumber::Rake::Task.new(:features) do |t|
  t.cucumber_opts = "features --format pretty"
end

task :feature, :name, :times do |task,args|
  puts "Executing feature: #{args[:name]} #{args[:times]} times"
  cuke_task.cucumber_opts = "features/#{args[:name]}"
  args[:times].to_i.times { Rake::Task[:features].execute }
end    

Сначала я создаю задание по умолчанию для огурца, которое выполнит все мои функции и отформатирует их для меня.

После этого я определяю задачу rake с именем feature, которая будет принимать два параметра name функции и times выполнения.

Затем я увеличиваю задачу cuke для использования указанной мной функции name и затем выполняю задачу Rake указанное количество раз.

$ rake feature['login.feature',500]
3 голосов
/ 26 августа 2014

Это также может быть выполнено с использованием схемы сценария и вложенных шагов:

Создание схемы сценария с N примерами. Сценарий будет запущен N раз.

Feature: Login Robustness

  Scenario Outline: I want to be assured that login works consistently
    When i run login # "<login>" repeatedly, it never fails

  Examples:
    | login                |
    | repeated login # 1   |
    | repeated login # 2   |
    | repeated login # N   | 
           …

Используйте ваши существующие шаги как вложенные шаги в наброске сценария, который вы определяете:

When(/^i run login \# "(.*?)" repeatedly, it never fails$/) do |login_run_number|
  puts login_run_number
  steps %{
  Given I am at initial login, Core
  When A correct username and password are entered, Native (Core)
  Then I should be logged in, Native (Core)
}
end

Преимущества:

  • За весь прогон теста написан только один отчет; там нет N отчеты, чтобы копаться, чтобы увидеть результаты.
  • Использует существующие функции огурца; без изменений необходимы рамки.
  • Тестеры уже понимают, как работают наброски сценариев.

Недостатки:

  • Ужасный, многострочный файл .feature.
1 голос
/ 24 апреля 2012

Пометьте свою функцию следующим образом: @ AndIwillwalk500miles

@AndIwillwalk500miles
Feature: Walk A Mile
  'That I can walk a mile in another man's shoes.'

  Scenario: That I can walk a Mile in loafers
    Given I am wearing loafers
    And I start at point A
    When I walk a mile
    Then I am at point B

Создайте файл ruby ​​в папке features/support/.Кажется, что конвенция env.rb или hooks.rb, но не имеет значения, как вы ее называете, пока она находится в этой папке.Я называю мой env.rb.Введите следующий код:

Around('@AndIwillwalk500miles') do |scenario, block|
  500.times { block.call }
end

Когда вы закончите, удалите тег.Если вы хотите запустить только один сценарий из вашей функции, просто пометьте его.Таким образом, вы можете выполнить столько тестов, сколько вам нужно, или 500 тестов, без необходимости использовать Rake или путаться с командной строкой.Это особенно полезно, если вы перемещаетесь между средами операционной системы.

0 голосов
/ 26 января 2013

Это глупая работа, но попробуйте это

функции огурца / функции file.feature /../ features / file.feature

до тех пор, пока путь к файлу не совпадает каждый раз, вы можете добавить столько "...", сколько хотите

...