我想测试我的可执行shell脚本黄瓜/阿鲁巴的帮助。 为了这个目的,我创建一个shell脚本,并将其放置在USR / local / bin目录/因此它可以从任何地方访问。
shell脚本:
arg=$1
if [ [ $arg = 1 ] ]
then
echo $(date)
fi
现在我想测试黄瓜/阿鲁巴这个shell脚本。 为了这个目的,我创建一个项目结构。
阿鲁巴 -
。
├──功能
│├──支持
││└──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`
Then the output should contain exactly $(date)
shell脚本代码返回日期。 现在我要检查这个功能的文件是该日期是否正确使用简单的检查。
例如:日期返回这样的:
周六11月5日15点00分十三秒IST 2016
所以我只是想检查星期六是对还是错。 为此目的,使用一个标签[周一,周二,周三,周四,周五,周六,周日与此类似。
如果周六在上述标签可用,则使这种测试情况下,一通。
注意 - 我说的简单sakel此标签的事情。 如果检查当天其他任何选项七天一周正确的,那么这应该可以理解。
谢谢。
这是我会做:
features/use_my_date_script_with_parameter.feature
:
Feature: MyDateScript abc_qa
Scenario: Run with one parameter
When I run `bash abc_qa.sh 1`
Then the output first word should be an abbreviated day of the week
And the output first word should be the current day of the week
And the output should be the current time
此功能的文件既是文档和程序的规范。 它的目的是人谁不一定是开发人员编写。 只要扩展名是“.feature”和结构是在这里(有特点,方案和步骤),你可以写里面相当多的东西描述。 关于黄瓜更多信息在这里 。
你可以添加一个新行(如“和输出应该看起来像,而不是B”),并启动黄瓜。 它不会失败,它只会告诉你什么,你应该在步骤文件中定义。
和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
Then(/^the output first word should be an abbreviated day of the week$/) do
#NOTE: It assumes that date is launched with LC_ALL=en_US.UTF-8 as locale
day_of_week, day, month, hms, zone, year = last_command_started.output.split
days_of_week = %w(Mon Tue Wed Thu Fri Sat Sun)
expect(days_of_week).to include(day_of_week)
end
Then(/^the output first word should be the current day of the week$/) do
day_of_week, day, month, hms, zone, year = last_command_started.output.split
expect(day_of_week).to eq(Time.now.strftime('%a'))
end
这是在功能文件中的句子都还不知道黄瓜的定义。 这是一个Ruby文件,所以你可以在里面写任何Ruby代码,主要是在之间的块do
和end
。 在那里,你可以有机会获得最后的命令(你的bash脚本,在这种情况下)的输出作为一个字符串,并用它编写测试。 例如,拆分此字符串和各部分分配给一个新的变量。 一旦你有一周的一天,一个字符串(例如“星期六”),你可以测试它与期望的关键字 。
这些测试都写在强度的顺序。 如果你不幸的第二个测试可能不会在午夜通过。 我定义的其他变量(日,月,HMS,区,年)的字符串,如果你想编写自己的测试。