Testen von Anwendungsverhalten / Dummy DB-API

02/12/2008 - 19:50 von Florian Lindner | Report spam
Hallo,

einige Bereiche meiner Anwendung sind durch Unit-Tests abgedeckt. Das
Problem ist, dass die Anwendung ein auf ThreadedTCPServer aufbauender
Server ist. Wie kann ich diese Teile (vor allen den Request Handler)
am besten testen. Ich habe schon einen Test-Client, allerdings ist
dies eine seperate Anwendung. Gibt es Möglichkeiten, dass sich solche
Tests (IIRC functional tests) besser in das Python Testframework
integrieren? Möglichst mit den Mitteln der Standardbibliothek.
Theoretisch könnte man wohl auch Unittests entsprechend
zweckentfremenden.
Wie würdet ihr sowas testen?

Noch eine andere Fragen: Die Anwendung benutzt auch MySQLdb.
Allerdings habe ich auf meiner primàren Entwicklungsmaschine MySQL
nicht installiert. Gibt es eine Art Dummy-Klasse, die das Datenbank-
API nachbildet und eigentlich nichts macht bzw. nur ein wenig loggt?
So dass ich schreiben kann

try:
import MySQLdb
except ImportError:
import Dummy as MySQLdb

Danke,

Florian
 

Lesen sie die antworten

#1 Diez B. Roggisch
02/12/2008 - 20:20 | Warnen spam
Florian Lindner schrieb:
Hallo,

einige Bereiche meiner Anwendung sind durch Unit-Tests abgedeckt. Das
Problem ist, dass die Anwendung ein auf ThreadedTCPServer aufbauender
Server ist. Wie kann ich diese Teile (vor allen den Request Handler)
am besten testen. Ich habe schon einen Test-Client, allerdings ist
dies eine seperate Anwendung. Gibt es Möglichkeiten, dass sich solche
Tests (IIRC functional tests) besser in das Python Testframework
integrieren? Möglichst mit den Mitteln der Standardbibliothek.
Theoretisch könnte man wohl auch Unittests entsprechend
zweckentfremenden.
Wie würdet ihr sowas testen?



Ich finde diese Trennung zwischen Unittests und funktionalen Tests eh
sehr artifiziell. Ich teste, was ich programmiere. Auch komplexere
Dinge. ZB XMLRPC-Client-Server-Kommunikation mit mehreren Threads. Es
liegt in der Natur der Sache, das das manchmal etwas schwerer zu
debuggen ist - aber wenigstens *ist* es zu debuggen :)


Noch eine andere Fragen: Die Anwendung benutzt auch MySQLdb.
Allerdings habe ich auf meiner primàren Entwicklungsmaschine MySQL
nicht installiert. Gibt es eine Art Dummy-Klasse, die das Datenbank-
API nachbildet und eigentlich nichts macht bzw. nur ein wenig loggt?
So dass ich schreiben kann

try:
import MySQLdb
except ImportError:
import Dummy as MySQLdb



etwas besseres: sqlite. Damit kannst du "richtig" abfragen machen usw.
Es kann nur in-memory arbeiten, oder auch in eine Datei.

Diez

Ähnliche fragen