Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
modul:m450:learningunits:lu03:pytest [2024/03/28 14:07] – angelegt - Externe Bearbeitung 127.0.0.1 | modul:m450:learningunits:lu03:pytest [2024/11/19 10:05] (aktuell) – [Resultate mit Fliesskommazahlen] msuter | ||
---|---|---|---|
Zeile 32: | Zeile 32: | ||
==== Unit Tests ==== | ==== Unit Tests ==== | ||
+ | |||
Die einzelnen Unit Tests werden als Funktionen in Python programmiert. | Die einzelnen Unit Tests werden als Funktionen in Python programmiert. | ||
Zum Beispiel: | Zum Beispiel: | ||
Zeile 47: | 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 54: | 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 73: | 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 88: | 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:// |