Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| modul:m450:learningunits:lu03:pytest [2024/10/02 10:10] – msuter | modul:m450:learningunits:lu03:pytest [2024/11/19 10:05] (aktuell) – [Resultate mit Fliesskommazahlen] msuter | ||
|---|---|---|---|
| Zeile 48: | Zeile 48: | ||
| === Assert === | === Assert === | ||
| Der Befehl '' | Der Befehl '' | ||
| - | Falls die Bedingung erfüllt ist, wird '' | + | Falls die Bedingung erfüllt ist, wird nichts gemacht. |
| Sonst wird eine '' | Sonst wird eine '' | ||
| Wir könnten das gleiche Resultat auch mit '' | Wir könnten das gleiche Resultat auch mit '' | ||
| Zeile 55: | Zeile 55: | ||
| | <code python> | | <code python> | ||
| if result == 5040: | if result == 5040: | ||
| - | | + | |
| else: | else: | ||
| raise AssertionError | raise AssertionError | ||
| </ | </ | ||
| - | ==== Beispiel ==== | + | ===== Beispiel |
| Anhand dieses einfachen Beispiels siehst du, wie eine Python-Funktion getestet werden kann. | Anhand dieses einfachen Beispiels siehst du, wie eine Python-Funktion getestet werden kann. | ||
| - | === factorial.py === | + | ==== factorial.py |
| Dieses Modul enthält eine Funktion um die Fakultät einer Zahl zu berechnen. | Dieses Modul enthält eine Funktion um die Fakultät einer Zahl zu berechnen. | ||
| Zeile 74: | Zeile 74: | ||
| </ | </ | ||
| - | === test_factorial.py === | + | ==== test_factorial.py |
| Dieses Modul enhält meine Unit Tests. | Dieses Modul enhält meine Unit Tests. | ||
| <code python> | <code python> | ||
| Zeile 89: | Zeile 89: | ||
| </ | </ | ||
| + | ===== Resultate mit Fliesskommazahlen ===== | ||
| + | Bei Berechnungen mit Fliesskommazahlen gibt es immer kleine Abweichungen bei den Resultaten. | ||
| + | Daher würde der Befehl '' | ||
| + | |||
| + | Um diesem Problem zu begegnen, gibt es die Funktion [[https:// | ||
| + | Diese Funktion vergleicht die Werte unter Berücksichtigung einer geringen Toleranz. | ||
| + | Beim Aufruf der Funktion muss zwingend das erwartete Resultat mitgegeben werden. | ||
| + | Zusätzlich kennt die Funktion 3 optionale Argumente: | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | ==== Beispiel ==== | ||
| + | In diesem Beispiel testen wir eine Funktion, welche die Mehrwertsteuer (engl. **V**alue **A**dded **T**ax) berechnet. | ||
| + | Wir haben ein Total von CHF 1575.50 was gemäss Taschenrechner einer Steuer von CHF 127.6155 entspricht. | ||
| + | |||
| + | <code python> | ||
| + | import pytest | ||
| + | |||
| + | def calculate_vat(amount): | ||
| + | | ||
| + | |||
| + | def test_calculate_vat(): | ||
| + | total = 1575.50 | ||
| + | vat = calculate_vat(total) | ||
| + | pytest.approx(127.6155) == vat | ||
| + | | ||
| + | </ | ||
| + | Da ich hier keine Angaben für relative und absolute Abweichung gemacht habe, müsste das tatsächliche Ergebnis bis auf die zwölfte Nachkommastelle übereinstimmen. | ||
| ===== Tutorials ===== | ===== Tutorials ===== | ||
| * [[https:// | * [[https:// | ||