-
1 passed in 0.09s: Ein Test wurde erfolgreich durchgeführt. -
.(Punkt): Bedeutet, dass der Test fehlerfrei durchgelaufen ist. -
collected 1 item: Ein Test wurde erfasst und ausgeführt.
Was passiert, wenn die Funktion verändert wird?
def add(a, b):
return a - bTestausgabe:
E assert -1 == 3
E + where -1 = add(1, 2)
1 failed in 0.10s-
E assert -1 == 3: Der Test erwartete3, aber die Funktion gab-1zurück. -
1 failed in 0.10s: Ein Test schlug fehl.
Funktion:
def divide(a, b):
if b == 0:
raise ValueError("Division durch Null ist nicht erlaubt")
return a / bTestfunktion:
import pytest
from test_div import divide
def test_divide():
with pytest.raises(ValueError):
divide(1, 0)Ausführung:
pytest test_divide.pyErgebnis:
collected 1 item
Unittest_divide.py .
1 passed in 0.06sFunktion:
def eingabe_zahl(prompt):
while True:
try:
return float(input(prompt))
except ValueError:
print("Ungültige Eingabe. Bitte eine gültige Zahl eingeben!")Test mit unittest:
import unittest
from unittest.mock import patch
from eingabe import eingabe_zahl
class TestEingabeZahl(unittest.TestCase):
@patch('builtins.input', return_value='5')
def test_gueltige_eingabe(self, mock_input):
result = eingabe_zahl("Gib eine Zahl ein: ")
self.assertEqual(result, 5.0)
@patch('builtins.input', side_effect=['abc', '3.14'])
def test_ungueltige_eingabe(self, mock_input):
result = eingabe_zahl("Gib eine Zahl ein: ")
self.assertEqual(result, 3.14)
if __name__ == '__main__':
unittest.main()Erklärung:
- @patch('builtins.input', return_value='5'): Simuliert eine Eingabe von 5.
- side_effect=['abc', '3.14']: Erst eine falsche Eingabe (abc), dann eine richtige (3.14).
- assertEqual(result, 3.14): Prüft, ob die Funktion korrekt auf ungültige Eingaben reagiert.
Unittest ausführen:
python3 -m unittest test_eingabe.pyErweiterte Funktion:
def eingabe_zahl(prompt, min_val = None, max_val = None, return_type = float):
while True:
eingabe = input(prompt)
try:
zahl = return_type(eingabe)
if min_val is not None and zahl < min_val:
print(f"Die Zahl muss mindestens {min_val} sein!")
continue
if max_val is not None and zahl > max_val:
print(f"Die Zahl darf höchstens {max_val} sein!")
continue
return zahl
except (ValueError, TypeError):
print(f"Ungültige Eingabe '{eingabe}'. Bitte eine gültige Zahl eingeben!")-
min_val=None, max_val=None: Optional, um einen Wertebereich zu definieren. -
return_type=float: Ermöglicht die Wahl zwischen Ganzzahlen (int) und Fließkommazahlen (float). -
Eingabeprüfung:
-
Gibt eine Fehlermeldung aus, wenn der Wert außerhalb des definierten Bereichs liegt.
-
Wiederholt die Eingabeaufforderung, falls eine falsche Eingabe gemacht wird.