2016-11-05 2 views
0

오이 기능 파일에서 실행중인 출력을 캡처하고 싶습니다.cucumber/aruba에서 쉘 스크립트 프로그램 출력을 캡처하는 방법은 무엇입니까?

필자는 하나의 쉘 스크립트 프로그램을 작성하여/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 - 나는 오이 자체에서이 abc_qa.sh 프로그램 출력을 캡처하고이 날짜는 비교할

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

모든 종류의 간단한 테스트를 사용하여 옳고 그름을 테스트하고이 테스트를 통과로 만듭니다.

답변

1

%x(command)을 사용하여 명령의 표준 출력을 얻을 수 있습니다.

그런 다음 시간 객체로 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- 환상적. 한가지 더, 쉘 스크립트의 출력 내용은 다음과 같습니다. 11 월 5 일 토요일 19:30:03 IST 2016. 나는 그 날을 일주일에 7 일로 확인하고이 시험에 합격하고 싶습니다. 내가 어떻게 할 수 있니? – kit