Einführung von Allure basierend auf der Übersetzung des offiziellen Dokuments.
Apropos Test-Frameworks: Es gibt viele großartige Tools in verschiedenen Sprachen, wie z. B. "JUnit", "RSpec", "Jest", "Pytest".
Viele Tools sind jedoch nicht in der Lage, visuell beeindruckende Testberichte zu erstellen.
Allure ergänzt es mit OSS, um Testausführungsberichte zu erstellen, die für jeden im Team leicht verständlich sind, unabhängig von Sprache oder Framework. ist.
Sehen heißt glauben. Öffnen wir den Demo-Bericht (https://demo.qameta.io/allure/).
Sie können sehen, dass der Testausführungsbericht aus vielen Perspektiven grafisch und interaktiv angezeigt werden kann.
Auch hier sind Sprache und Rahmen für diese Generationen irrelevant. Sie können den aktuell in Betrieb befindlichen Testcode verwenden, der aus "JUnit", "RSpec", "Jest" oder "Pytest" stammt.
Allure basiert auf der Ausgabe der allgemeinen "xUnit" (Sammelbegriff für Unit-Test-Frameworks) sowie zusätzlichen Daten.
Der Testbericht wird in den folgenden zwei Schritten erstellt.
** 1. Testausführung **
Wenn verschiedene Testframeworks Tests ausführen, generiert eine kompakte Bibliothek namens "Adapter" Informationen zu den ausgeführten Tests im XML- oder JSON-Format.
Der "Adapter" wird offiziell für "Java", "PHP", "Ruby", "Python", "Scala" und "C #" bereitgestellt und unterstützt jeweils wichtige Test-Frameworks.
** 2. Berichterstellung **
Nach Abschluss des Tests wird basierend auf den generierten Daten ein HTML-formatierter Bericht erstellt.
Die Berichterstellung kann über das CLI-Tool erfolgen.
Verwendungsbeispiele durch verschiedene Frameworks
In diesem Artikel wird der Einfachheit halber RSpec als Beispiel verwendet, aber viele Sprachen und Frameworks können in denselben Schritten ausgeführt werden.
Installieren Sie den "allure" -Körper, ein CLI-Tool zum Generieren von Berichten. Da wir diesmal einen Mac verwenden, installieren Sie ihn mit Brew.
$ brew install allure
Es ist in Ordnung, wenn Sie die Version bestätigen können.
$ allure --version
2.13.0
$ allure --version
No Java runtime present, requesting install.
Wenn Sie so etwas bekommen, müssen Sie die Java-Laufzeit einschließen.
Dieses Mal bereiten wir einen Komponententest vor, der das Verhalten der Klasse "Calculator" wie folgt überprüft.
Die Calculator
-Klasse ist eine Klasse, die basierend auf dem Anfangswert addieren und subtrahieren kann. Nur eine ist absichtlich so eingestellt, dass der Test fehlschlägt.
describe Calculator do
subject { described_class.new(initial_value) }
describe '#Zugabe hinzufügen' do
context 'Wenn der Anfangswert 0 ist' do
let(:initial_value) { 0 }
it 'Addiere 10, um 10 zurück zu bekommen' do
expect(subject.add(10)).to eq 10
end
end
context 'Wenn der Anfangswert 5 ist' do
let(:initial_value) { 5 }
it 'Addiere 10, um 15 zurück zu bekommen' do
expect(subject.add(10)).to eq 15
end
end
end
describe '#Subtraktion' do
context 'Wenn der Anfangswert 0 ist' do
let(:initial_value) { 0 }
#Herbsttest
it 'Subtrahieren Sie 10, um 0 zurückzugeben' do
expect(subject.sub(10)).to eq 0
end
end
context 'Wenn der Anfangswert 30 ist' do
let(:initial_value) { 30 }
it 'Subtrahieren Sie 10, um 20 zurückzugeben' do
expect(subject.sub(10)).to eq 20
end
end
end
end
Wenn rpsec normal ausgeführt wird, ist es wie folgt
$ bundle exec rspec spec/sample_spec.rb -f d
Calculator
#Zugabe hinzufügen
Wenn der Anfangswert 0 ist
Addiere 10, um 10 zurück zu bekommen
Wenn der Anfangswert 5 ist
Addiere 10, um 15 zurück zu bekommen
#Subtraktion
Wenn der Anfangswert 0 ist
Subtrahieren Sie 10, um 0 zurückzugeben(FAILED - 1)
Wenn der Anfangswert 30 ist
Subtrahieren Sie 10, um 20 zurückzugeben
Failures:
1) Calculator#Subtraktion Wenn der Anfangswert 0 ist, ergibt die Subtraktion von 10 0.
Failure/Error: expect(subject.sub(10)).to eq 0
expected: 0
got: -10
(compared using ==)
# ./sample_spec.rb:42:in `block (4 levels) in <top (required)>'
Finished in 0.11199 seconds (files took 2.06 seconds to load)
4 examples, 1 failure
Failed examples:
rspec ./sample_spec.rb:41 # Calculator#Subtraktion Wenn der Anfangswert 0 ist, ergibt die Subtraktion von 10 0.
Verwenden Sie beim Ausführen von Rspec den Allure-Adapter für Ruby, um Daten für die Berichterstellung zu generieren.
Der Adapter für RSpec verwendet allure-rspec.
Fügen Sie diesmal der Gemfile Folgendes hinzu und installieren Sie sie.
gem "allure-rspec"
Laden Sie den Adapter mit spec_helper
require "allure-rspec"
Geben Sie den Adapter zur Laufzeit als Formatierer an. Diesmal wird nichts an die Standardausgabe ausgegeben.
$ bundle exec rspec spec/sample_spec.rb -f AllureRspecFormatter
Standardmäßig wird das Verzeichnis "Berichte" erstellt und Berichtsdaten werden mit der folgenden Struktur generiert.
$ tree reports/
reports/
└── allure-results
├── 4ee53de0-790a-0138-ab5e-3d13be3ed9ba-container.json
├── 4ee54750-790a-0138-ab5e-3d13be3ed9ba-container.json
├── 4ee54a80-790a-0138-ab5e-3d13be3ed9ba-container.json
├── 4ee64530-790a-0138-ab5e-3d13be3ed9ba-result.json
├── 4ee7fad0-790a-0138-ab5e-3d13be3ed9ba-container.json
├── 4ee80710-790a-0138-ab5e-3d13be3ed9ba-result.json
├── 4ee83ae0-790a-0138-ab5e-3d13be3ed9ba-container.json
├── 4ee83e90-790a-0138-ab5e-3d13be3ed9ba-container.json
├── 4ee84860-790a-0138-ab5e-3d13be3ed9ba-result.json
├── 4eefe9b0-790a-0138-ab5e-3d13be3ed9ba-container.json
└── 4eeff800-790a-0138-ab5e-3d13be3ed9ba-result.json
1 directory, 11 files
Verwenden Sie die im vorherigen Abschnitt ausgegebenen Berichtsdaten, um einen Bericht mit dem Befehl "allure" zu erstellen.
Mit dem Unterbefehl "Serve" können Sie einen Bericht lokal erstellen und in Ihrem Browser darauf zugreifen.
$ allure serve -h 0.0.0.0 ./reports/allure-results/
Generating report to temp directory...
Report successfully generated to /var/folders/3_/r5h56zzn1130yr7vkpjftqpw0000gp/T/15980098365829452874/allure-report
Starting web server...
2020-05-16 04:02:58.509:INFO::main: Logging initialized @3541ms to org.eclipse.jetty.util.log.StdErrLog
Server started at <http://0.0.0.0:57717/>. Press <Ctrl+C> to exit
Im obigen Beispiel konnte ich beim Zugriff auf 0.0.0.0: 57717
bestätigen, dass der Bericht erfolgreich generiert wurde.
Wie der Titel dieses Artikels andeutet, ist er sehr vielseitig und vielseitig, da er nicht von der Sprache oder dem Framework abhängt. Daher hatte ich den Eindruck, dass er für den individuellen Gebrauch zu viel wäre.
Es mag eine gute Idee sein, einen Test unter der Annahme von Allure von Anfang an zu entwerfen, aber es scheint schwierig, vorhandenen Testcode zu platzieren, wenn er nicht gut strukturiert ist.