Referenz
Ausgabe und Tests
Wählen Sie zwischen PDF, Produkt-HTML und Debug-HTML, und testen Sie Ihre Dokumente in der CI mit Snapshot-Dateien statt mit PDF-Vergleichen.
Auf dieser Seite
Drei Arten von Ausgabe
| Ausgabe | Befehl | Stabil? | Wofür |
|---|---|---|---|
brevier pdf … -o doc.pdf |
ja | das Dokument, das Sie verschicken | |
| Produkt-HTML | brevier html … -o doc.html |
ja | das Dokument in einem Webportal zeigen, und Snapshot-Tests |
| Debug-HTML | brevier pdf … --debug |
nein | herausfinden, warum eine Seite falsch aussieht |
Produkt-HTML
brevier html schreibt das fertige Dokument als HTML. Seine Klassennamen
gehören zum Vertrag von Brevier: Ein Update fügt Klassen hinzu, entfernt
aber keine Klasse und ändert nicht, was sie auswählt. Gestalten Sie sie im
CSS Ihres Portals. Heute gibt es eine:
| Klasse | An | Bedeutung |
|---|---|---|
brevier-page |
<body> |
Das ganze Dokument. Das Theme web stellt alle seine Regeln unter diese Klasse. |
Brevier setzt keine weiteren eigenen Klassen. Eine Klasse, die Ihre Vorlage an eigene Elemente schreibt, gehört zu Ihrem Dokument und bleibt unverändert.
Debug-HTML
--debug legt .debug.html und .debug.css neben die Ausgabe. Sie zeigen
genau, was die Engine bekommen hat. Sie können sich mit jedem Release
ändern; bauen Sie also nicht darauf auf: Für die --debug-Ausgabe gibt es
kein Stabilitätsversprechen.
Ein Unterschied zum Produkt-HTML: Das Debug-HTML schreibt jedes weiche
Trennzeichen (U+00AD), das Brevier für die Silbentrennung eingefügt hat, als
sichtbare Entität ­. Editoren und Diff-Werkzeuge zeigen das echte
Zeichen als Nichts. Die Engine bekommt weiterhin das echte Zeichen. Nur die
Kopie auf der Festplatte ändert sich.
Snapshot-Tests
Zwei PDFs zu vergleichen ist schwer. Zwei HTML-Dateien zu vergleichen ist ein Text-Diff. Testen Sie also das Produkt-HTML: Setzen Sie ein festes Beispiel und vergleichen Sie es mit einer Datei in Ihrem Repository.
from brevier.testing import assert_matches_snapshot
def test_invoice_snapshot():
html = render_my_invoice() # Ihr eigener Code, mit brevier html
assert_matches_snapshot(html, "snapshots/invoice.html")| Fall | Ergebnis |
|---|---|
| Das HTML passt zur Datei | Der Test ist grün. |
| Das HTML weicht ab | Der Test schlägt fehl und zeigt die geänderten Zeilen. |
| Noch keine Datei | Der Test schlägt fehl und sagt, wie Sie sie anlegen. |
Ist eine Änderung gewollt, schreiben Sie den neuen Snapshot, statt den Test zu ändern:
BREVIER_UPDATE_SNAPSHOTS=1 pytest test_invoice.pyDas schreibt jeden Snapshot, den der Lauf berührt, und schlägt nie fehl. Prüfen Sie die geänderten Snapshot-Dateien im Diff und lassen Sie die Tests dann ohne die Variable noch einmal laufen.
assert_matches_snapshot(html, path, update=True) tut dasselbe für einen
einzelnen Aufruf, was auch die Umgebung sagt.