如何从 cucumber/aruba 捕获 shell 脚本程序输出?
How to capture shell script program output from cucumber/aruba?
我想从 cucumber 特征文件中捕获我 运行 的输出。
我创建了一个 shell 脚本程序并将其放在 /usr/local/bin/ 中,因此可以从系统中的任何位置访问它。
abc_qa.sh -
arg=
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 程序输出,并通过使用任何一种简单测试来比较这个日期是对还是错,并使这个测试通过。
您可以使用 %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
我想从 cucumber 特征文件中捕获我 运行 的输出。
我创建了一个 shell 脚本程序并将其放在 /usr/local/bin/ 中,因此可以从系统中的任何位置访问它。
abc_qa.sh -
arg=
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 程序输出,并通过使用任何一种简单测试来比较这个日期是对还是错,并使这个测试通过。
您可以使用 %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