Grundlagen der Softwareentwicklung in Python
Adam Spannbauer
Machine Learning Engineer at Eastman
doctestpytest
def square(x): """Quadriere die Zahl x :param x: Zahl zum Quadrieren :return: x quadriert >>> square(3) 9 """ return x ** 3import doctest doctest.testmod()
Fehlgeschlagenes Beispiel:
square(3)
Erwartet:
9
Bekommen:
27


arbeiten in workdir/tests/test_document.py
from text_analyzer import Document # Teste tokens-Attribut auf Document-Objekt def test_document_tokens(): doc = Document('a e i o u') assert doc.tokens == ['a', 'e', 'i', 'o', 'u']# Teste Randfall eines leeren Dokuments def test_document_empty(): doc = Document('') assert doc.tokens == [] assert doc.word_counts == Counter()
# Erstelle 2 identische Document-Objekte doc_a = Document('a e i o u') doc_b = Document('a e i o u') # Prüfe, ob Objekte == sind print(doc_a == doc_b)# Prüfe, ob Attribute == sind print(doc_a.tokens == doc_b.tokens) print(doc_a.word_counts == doc_b.word_counts)
FalseTrue True
arbeiten mit Terminal
datacamp@server:~/work_dir $ pytest
2 Elemente gesammelt
tests/test_document.py .. [100%]
========== 2 bestanden in 0,61 Sekunden ==========
arbeiten mit Terminal
datacamp@server:~/work_dir $ pytest tests/test_document.py
2 Elemente gesammelt
tests/test_document.py .. [100%]
========== 2 bestanden in 0,61 Sekunden ==========
arbeiten mit Terminal
datacamp@server:~/work_dir $ pytest
2 Elemente gesammelt
tests/test_document.py F.
============== FEHLER ==============
________ test_document_tokens ________
def test_document_tokens(): doc = Document('a e i o u')
assert doc.tokens == ['a', 'e', 'i', 'o']
E AssertionError: assert ['a', 'e', 'i', 'o', 'u'] == ['a', 'e', 'i', 'o']
E Linke Seite enthält mehr Elemente, erstes zusätzliches Element: 'u'
E Verwende -v, um den vollständigen Unterschied zu sehen
tests/test_document.py:7: AssertionError
====== 1 fehlgeschlagen in 0,57 Sekunden ======
Grundlagen der Softwareentwicklung in Python