pytest¶
pytest ist eine Alternative zu Pythons Unittest-Modul, die das Testen noch weiter vereinfacht.
pytest erkennt Tests automatisch anhand von Dateinamen und Funktionen, die mit
test_beginnen, während bei unittest Testklassen und -Methoden vonunittest.TestCaseabgeleitet werden. Dies führt zu einer einfacheren, besser lesbaren Syntax mit weniger Boilerplate-Code.unittest bietet eine Reihe von Assertion-Methoden (z. B.
assertEqual(),assertTrue(),assertRaises()). Mit pytest lassen sich dieselben Annahmen definieren, allerdings mit der Standard-assert()-Anweisung von Python. Dies führt häufig zu aussagekräftigeren Fehlermeldungen und einer besseren Introspektion.unittest stellt für Fixtures nur
setUp()- undtearDown()-Methoden bereit. In pytest hingegen werden Fixtures als Funktionen definiert, was die Wiederverwendbarkeit fördert und die Verwaltung von Testabhängigkeiten vereinfacht.In unittest sind parametrisierte Tests zwar möglich, erfordern jedoch zusätzliche Aufwand. pytest enthält hingegen den Dekorator
@pytest.mark.parametrize, mit dem mühelos Testfunktionen mit unterschiedlichen Eingaben und erwarteten Ergebnissen ausgeführt werden können.pytest verfügt über ein umfangreiches Ökosystem mit über 800 Plugins für fortgeschrittene Testanforderungen; unittest ist in seiner Erweiterbarkeit eingeschränkter.
Bemerkung
Auch bei agentischer Software-Entwicklung nutzen wir pytest:
# Testing
- Use `pytest` for testing your code.
- Collect pytest fixtures in a `conftest.py` file to avoid duplication.
- When a test fails, run the last failed test first using `uv run pytest --last-failed`.
Siehe auch
Siehe auch
Im Jupyter Tutorial ist beschrieben, wie pytest auch in Jupyter Notebooks verwendet werden kann.
Installation¶
Ihr könnt pytest mit uv installieren:
$ uv add --group tests pytest
C:> uv add --group tests pytest