2016-11-05 25 views
0

キュウリの機能ファイルから実行している出力をキャプチャしたいと思います。cucumber/arubaからシェルスクリプトプログラムの出力をキャプチャする方法は?

私は1つのシェルスクリプトプログラムを作成し、/ usr/local/bin /に置いて、システムのどこからでもアクセスできるようにしました。

abc_qa.sh - キュウリの

arg=$1 
if [[ $arg = 1 ]] 
then 
    echo $(date) 
fi 

プロジェクト構造 -

アルバ -

├──│サポートしています├──

││└──env.rb

│└──use_aruba_cucumber.feature

├──Gemfile

ジェムファイル -

source 'https://rubygems.org' 
gem 'aruba', '~> 0.14.2' 

env.rb -

require 'aruba/cucumber' 

use_aruba_cucumber.feature -

Feature: Cucumber 
Scenario: First Run 
    When I run `bash abc_qa.sh 1` 

私はキュウリ自体でこのabc_qa.shプログラムの出力をキャプチャして、この日付を比較したいですどのような種類の簡単なテストを使っても間違いなく、このテストを合格にすることができます。

答えて

1

%x(command)を使用すると、コマンドの標準出力を取得できます。

その後、Timeオブジェクトとして2016-11-05 12:04:18 +0100"Sat Nov 5 12:04:18 CET 2016"を変換するTime.parseを使用し、Time.nowにそれを比較することができます

require 'time' 
time_from_abc_script = Time.parse(%x(bash abc_qa.sh 1)) 
puts (Time.now-time_from_abc_script).abs < 5 # No more than 5s difference between 2 times 

は、あなたが望む任意のテストファイルにこのブール値を使用することができます。例えば

features/use_aruba_with_cucumber.feature

Feature: Cucumber 
Scenario: First Run 
    When I run `bash abc_qa.sh 1` 
    Then the output should be the current time 

features/step_definitions/time_steps.rb

require 'time' 

Then(/^the output should be the current time$/) do 
    time_from_script = Time.parse(last_command_started.output) 
    expect(time_from_script).to be_within(5).of(Time.now) 
end 
+0

私はキュウリに新たなんです。私は何を書く必要があり、どんな方法で教えてくれますか? – kit

+0

私のマシンにaruba/cucumberをインストールし、機能とステップ定義を書きます。 –

+0

@ EricDuminil-ファンタスティック。もう1つ、シェルスクリプトの出力には、次の内容が含まれています:土曜日11月5日19:30:03 IST 2016.私はその日が週7日であることを確認し、このテストに合格します。私はそれをどのようにすることができますか? – kit

関連する問題