2016-11-05 2 views
1

Ich möchte mein ausführbares Shell-Skript mit Hilfe von Gurke/Aruba testen. Zu diesem Zweck habe ich ein Shell-Skript erstellt und in usr/local/bin/platziert, damit es von überall her zugänglich ist.Wie wird das Datum in Gurke/Aruba verglichen?

Shell-Skript:

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

Jetzt möchte ich in Gurke/aruba dieses Shell-Skript testen. Zu diesem Zweck habe ich eine Projektstruktur erstellt.

aruba -

.

├──

verfügt

│ ├── Unterstützung

│ │ └── 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-Script-Code zurückkehrt Datum. In dieser Feature-Datei möchte ich überprüfen, ob das Datum richtig ist oder nicht, indem Sie die einfache Überprüfung verwenden.

Beispiel: Datum wird wie folgt Rückkehr:

Sa 5. November 15.00.13 IST 2016

so möchte ich nur prüfen, Sat richtig oder falsch ist. Verwenden Sie dazu eine Beschriftung [Mo, Di, Mi, Do, Fr, Sa, So].

Wenn Sat im obigen Etikett verfügbar ist Dann machen Sie diesen Testfall als einen Durchgang.

Hinweis - Ich sage diese Label-Sache für Einfachheit sakel. Wenn eine andere Option für die Überprüfung Tag in sieben Tagen der Woche richtig ist, dann sollte dies geschätzt werden.

Danke.

Antwort

1

Dies ist, was ich tun würde:

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 

Diese Funktion Datei ist sowohl eine Dokumentation und Spezifikationen Ihres Programms. Es soll von Leuten geschrieben werden, die nicht unbedingt Entwickler sind. Solange die Erweiterung ist ".Feature "und die Struktur ist hier (Mit Feature, Szenario und Schritte), können Sie so ziemlich alles beschreibende in. Mehr Infos über Gurke here.

Sie könnten eine neue Zeile hinzufügen (zB" Und die Ausgabe sollte wie aussehen A und nicht B ") und starten Gurke es wird nicht scheitern, es wird Ihnen nur sagen, was Sie in den Schritten Datei definieren sollten

und 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 

Dies ist die Definition der Sätze in Feature-Datei, die Gurke noch nicht bekannt sind. Es ist eine Ruby-Datei, so dass Sie meistens Ruby-Code schreiben können in den Blöcken zwischen do und end. Dort können Sie Zugriff auf die Ausgabe des letzten Befehls (in diesem Fall Ihr Bash-Skript) als String haben und Tests damit schreiben. Teilen Sie diese Zeichenfolge beispielsweise auf und weisen Sie jedem Teil eine neue Variable zu. Sobald Sie den Wochentag als Zeichenfolge (z. B. "Sat") haben, können Sie es mit expect keyword testen.

Die Tests werden in der Reihenfolge der Stärke geschrieben. Der zweite Test kann nicht um Mitternacht passieren, wenn Sie Pech haben. Ich habe andere Variablen (Tag, Monat, HMS, Zone, Jahr) als String definiert, wenn Sie einen eigenen Test schreiben möchten.

+0

@ EricDuminil- Es scheint gut. Kannst du die Bedeutung jeder Zeile erklären, die in use_aruba_with_cucumber.feature und time_steps.rb steht? – kit

+0

Ich habe mein Bestes versucht. Sie können versuchen, die Skripts zu ändern und zu sehen, was passiert. Sie finden viele Tutorials zu gurke/rspec/ruby ​​auf Google. –

+0

@ EricDuminil- Gute Arbeit. schätzte deine Bemühungen. Vielen Dank – kit

Verwandte Themen