2017-01-17 12 views
1

У меня есть следующая структура папок:Можно ли узнать, из какого сценария папки огурец работает?

-features 
    -admin 
    -desktop 
    -mobile 
-step definitions 
-support 

Я хочу знать, из какой папки текущий сценарий работает в настоящее время (админ/настольный/мобильный). Возможно ли это? Потому что я хочу добавить условие в hooks файл для выполнения необходимых условий в разных папках.

+0

Что случилось с простым старым добрым '__FILE__'? – mudasobwa

+0

Он ставит только имя файла с крючками. И мне нужно определить, из какого сценария папки был запущен. потому что я хочу обнаружить его в файле hooks в методе Before. Можно ли так? –

ответ

2

Вы можете получить доступ к сведениям о местоположении файла, используя функцию Scenario#location метод, который возвращает Cucumber::Core::Ast::Location::Precise. Из того, что вы можете получить доступ пути к файлу описываемого объекта с помощью #file:

scenario.location.file 
#=> "features/mobile/test.feature" 

Например, крюк может выглядеть следующим образом:

Before do |scenario| 
    platform = scenario.location.file.split(File::SEPARATOR)[1].to_sym 
    #=> :admin:, :desktop or :mobile 

    # Output the platform (or whatever conditional logic you want) 
    case platform 
    when :admin then puts 'admin' 
    when :desktop then puts 'desktop' 
    when :mobile then puts 'mobile' 
    end 
end 
+0

Ничего себе, отлично! Джастин - ты лучший! Благодаря! –

0

Если вы используете Ruby, версии 2.0 и выше, то метод __dir__ ваш путь (в случае, если вы хотите, чтобы получить абсолютный путь):

# File: /home/xxx/folder/features/admin/test.rb puts __dir__ # => "/home/xxx/folder/features/admin"

Но что, если вы хотите узнать имя каталога, в котором находится файл? Тогда вы могли бы использовать File.basename:

# File: /home/xxx/folder/features/admin/test.rb puts File.basename(__dir__) # => "admin"