Testen mit pytest

Installation

pip install pytest

Ausfühurng: 1. Versuch

pytest
======================== test session starts =========================
platform darwin -- Python 3.7.3, pytest-4.5.0, py-1.8.0, pluggy-0.12.0
rootdir: /Volumes/ram-disk/logstatistik/alstat
collected 0 items

==================== no tests ran in 0.02 seconds ====================

Warum werden keine Tests gefunden? Antwort: Testordner- wie Dateien müssen mit »test« im Namen beginnen. Der Autor hat die Tests aber in die Datei __init__ gepackt! Vorschlag: umbenennen der Datei __init__.py zu test_altstat.py

mv __init__.py tests_alstat.py

Ausfühurng: 2. Versuch

Warnung beseitigen in tests_alstat.py …

pytest

...

========== 1 failed, 5 passed, 33 warnings in 0.10 seconds ====

Auch hier gab es eine Änderung aus assertEquals wurde assertEqual (ohne s am Ende)!

Ausfühurng: 3. Versuch

Es bleibt eine Fehlermeldung:

E           AttributeError: 'dict' object has no attribute 'iteritems'

alstat/parsers/base.py:58: AttributeError

Auf die Inhalte eines Dictionary kann aktuell mit items statt iteritems zugegriffen werden.

Erfolgreiche Tests?

alstat -d ./tests/logs/ -p "*access*" -f "base" http_method status

Nein, denn auch im Script: console.py in der Zeile 65 befindet sich noch ein iteritems, das durch items ersetzt werden muss und durch die Tests nicht abgedeckt war.

Traceback (most recent call last):
File "/Volumes/ram-disk/logstatistik/bin/alstat", line 11, in <module>
 load_entry_point('alstat', 'console_scripts', 'alstat')()
File "/Volumes/ram-disk/logstatistik/alstat/alstat/console.py", line 65, in main
 print(" ".join([v for k, v in x.iteritems() if k in args]))
AttributeError: 'dict' object has no attribute 'iteritems'

Erfolgreicher Aufruf:

alstat -d ./tests/logs/ -p "*log" -l
alstat -d ./tests/logs/ -p "*log" -f "base" http_method status