2016-11-05 70 views
0

我想從黃瓜特徵文件中捕獲我正在運行的輸出。如何從cucumber/aruba捕獲shell腳本程序輸出?

我創建了一個shell腳本程序並將其放在/ usr/local/bin /中,以便可以從系統中的任何位置訪問它。

abc_qa.sh - 黃瓜

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

項目結構 -

阿魯巴 -

├──功能

│├──支持

││└──env.rb

│└──use_aruba_cucumber.feature

├──的Gemfile

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.parse"Sat Nov 5 12:04:18 CET 2016"轉換爲2016-11-05 12:04:18 +0100爲Time對象,並將其與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-太棒了。還有一件事,shell腳本的輸出包含:星期六11月5日19:30:03 IST 2016.我想檢查它的一天是在一週中的七天,然後通過這個測試。我該怎麼做? – kit