[RUBY] Verwenden Sie Allure, um stilvolle Testberichte zu erstellen, die sprach- und rahmenunabhängig sind!

Überblick

Einführung von Allure basierend auf der Übersetzung des offiziellen Dokuments.

Über Allure

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.

Demo

Sehen heißt glauben. Öffnen wir den Demo-Bericht (https://demo.qameta.io/allure/).

スクリーンショット 2020-05-16 2.46.02.png

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.

Wie erstelle ich einen Bericht?

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

Ausführungsbeispiel mit RSpec (Ruby)

In diesem Artikel wird der Einfachheit halber RSpec als Beispiel verwendet, aber viele Sprachen und Frameworks können in denselben Schritten ausgeführt werden.

CLI-Installation

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.

Vorbereitung des Testcodes

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.

Generieren Sie Berichtsdaten mit einem Adapter

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

Generieren Sie einen Bericht

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.

スクリーンショット 2020-05-16 4.05.59.png スクリーンショット 2020-05-16 4.05.40.png

Impressionen

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.

Recommended Posts

Verwenden Sie Allure, um stilvolle Testberichte zu erstellen, die sprach- und rahmenunabhängig sind!
Verwendung von StringBurrer und Arrays.toString.
Verwendung von EventBus3 und ThreadMode
Wie man Gleichheit und Gleichheit benutzt (wie man Gleichheit benutzt)
Ich habe getestet, wie man Rubys Test / Gerät und Janken's Code verwendet.
Verwendung von OrientJS und OrientDB zusammen
Java Artery - Einfach zu verwendende Unit-Test-Bibliothek
So richten Sie kapt ein und verwenden es
Verwendung von Teilzeichenfolgen und Substratmethoden
Verwendung von @Builder und @NoArgsConstructor zusammen
[Java] Verwendung der FileReader-Klasse und der BufferedReader-Klasse
[Ruby] Verwendung der gsub-Methode und der sub-Methode
Verwendung von Segmented Control und zu notierenden Punkten
Verwendung der Scope- und Pass-Verarbeitung (Servist)
[Java] Verwendung der Kalenderklasse und der Datumsklasse