0

我想从黄瓜功能文件中捕获我正在运行的输出。

我创建了一个 shell 脚本程序并将其放在 /usr/local/bin/ 中,以便可以从系统中的任何位置访问它。

abc_qa.sh -

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

黄瓜的项目结构——

阿鲁巴 -

.

├── 特色

│ ├── 支持

│ │ └── env.rb

│ └── use_aruba_cucumber.feature

├── 宝石文件

宝石文件 -

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

环境.rb -

require 'aruba/cucumber'

use_aruba_cucumber.feature -

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

我想在黄瓜本身中捕获这个 abc_qa.sh 程序输出,并通过使用任何一种简单的测试来比较这个日期是对还是错,并使这个测试通过。

4

1 回答 1

1

您可以%x(command)用来获取命令的标准输出。

然后,您可以使用Time.parse转换"Sat Nov 5 12:04:18 CET 2016"2016-11-05 12:04:18 +0100Time 对象,并将其与 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
于 2016-11-05T11:09:22.687 回答