きゅうりのテストにセレンを使用してスクリーンショットを撮っています。ステップの 1 つに、ステップ + タイムスタンプからの入力を使用して生成されたフォルダー名を持つフォルダーにスクリーンショット ファイルを配置する必要があります。
これが私がこれまでに達成したことです:
Then /^screen shots are placed in the folder "(.*)"$/ do |folder_name|
time = Time.now.strftime("%Y%m%d%H%M%S")
source ="screen_shots"
destination = "screen_shots\_#{folder_name}_#{time}"
if !Dir.exists? destination
Dir.new destination
end
Dir.glob(File.join(source, '*')).each do |file|
if File.exists? (file)
File.move file, File.join(destination, File.basename(file))
end
end
end
ディレクトリが存在しない場合は、作成します。次に、すべてのスクリーンショットを新しいディレクトリに配置します。
フォルダはスクリーンショットと同じディレクトリに作成され、すべてのスクリーンショット ファイルがそのフォルダに移動されます。私はまだルビーを学んでいますが、これをまとめようとする試みはまったくうまくいきません:
Desktop > cucumber_project_folder > screenshots_folder > shot1.png, shot2.png
screenshots
つまり、新しいディレクトリを作成してそこに移動shot1.png
したいのですshot2.png
。どうすればそうできますか?
与えられた答えに基づいて、これが解決策です(キュウリの場合)
Then /^screen shots are placed in the folder "(.*)" contained in "(.*)"$/ do |folder_name, source_path|
date_time = Time.now.strftime('%m-%d-%Y %H:%M:%S')
source = Pathname.new(source_path)
destination = source + "#{folder_name}_#{date_time}"
destination.mkdir unless destination.exist?
files = source.children.find_all { |f| f.file? and f.fnmatch?('*.png') }
FileUtils.move(files, destination)
end
ステップでソース パスが示されるため、別のユーザーが定義を変更する必要はありません。