能不能知道cucumber场景来自哪个文件夹运行?
Is it possible to know from which folder cucumber scenario is running?
我有下一个文件夹结构:
-features
-admin
-desktop
-mobile
-step definitions
-support
我想知道当前场景 运行 来自哪个文件夹(管理/桌面/移动)。
可能吗?
因为我想在 hooks 文件中添加条件以执行不同文件夹所需的条件。
如果您使用的是 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"
您可以使用 Scenario#location
method, which returns a 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
我有下一个文件夹结构:
-features
-admin
-desktop
-mobile
-step definitions
-support
我想知道当前场景 运行 来自哪个文件夹(管理/桌面/移动)。 可能吗? 因为我想在 hooks 文件中添加条件以执行不同文件夹所需的条件。
如果您使用的是 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"
您可以使用 Scenario#location
method, which returns a 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