Suche eine Python-Bibliothek zum simulieren einer Datenbank
Bin ich zum Schluss eine Uni-Projekt beinhaltet, dass die Python, und mein team hat einen test-case-Mangel. Wir brauchen mehr, und wir müssen insbesondere einige Testfälle für die Datenbank. Dies ist, wo Spott kommt, jedoch. Wir brauchen eine Python-spezifische Bibliothek, die verwendet werden können, um ein mock-Datenbank, so dass die Testfälle nicht die Verwendung von SQL und der Zugriff auf die eigentliche Datenbank. Wir verwenden MySQL als Datenbank. Es ist ein bisschen schwierig für mich zu kommen, die über ein einfach zu bedienendes Python-Datenbank-Spott-Bibliothek. Was wäre das beste für unsere Testfälle? Oder gibt es eine bessere Möglichkeit zum testen einer Datenbank in Python, ohne es zu berühren? Ich würde schätzen Ihre Beratung sehr viel. Vielen Dank 🙂
- Können Sie nicht erstellen Sie einfach eine test-version von der Datenbank? Wenn Sie aus irgendeinem Grund nicht wollen oder können nicht die Verwendung von MySQL für die Prüfung, SQLite ist im Bundle mit der Python-version 2.7
- Funktioniert die Python alle eingebauten Datenbank, wie Ruby tut?
- Ich weiß, ruby on rails das framework ist eine Abstraktion, so dass Sie nicht haben, um SQL-Konstrukt, ist das, was Sie sich beziehen? Python die Sprache nicht über etwas wie das builtin; wenn Sie reden über das, was ich denke, es ist eine Funktion des Rahmens, nicht die ruby-Sprache. Ich konnte völlig falsch über diese.
- Ja, ich Rede von dem framework Rails. Wir sind mit dem Python framework Django.
- Leider denke ich, dass Sie schauen, für die Funktionalität an der falschen Stelle. Python die Sprache nicht das bieten, was Sie suchen, aber ich glaube nicht, dass jeder tun. Gehen zusammen mit Eli, es klingt wie Sie möglicherweise müssen Sie zum konfigurieren eines test-Instanz Django/MySQL
- würde nur mit SQLite den trick tun?
- Mit SQLite müssen Sie erstellen Ihre SQL etc. Es ist nicht wirklich bieten keine bessere Abstraktion als das MySQLdb-Modul. Ich erwähnte es nur als eine vordefinierte alternative sollten Sie versuchen, um Weg von MySQL. Hier ist ein Beispiel, wie man mit abstrakten, einige der SQL- devshed.com/c/a/Python/Using-SQLite-in-Python/4 aber Sie könnten am Ende verbringen mehr Zeit mit dem Versuch zu machen dies zu einem nahtlosen Anbiederung als nur die Schaffung eines test-env (falls es das ist, was Sie nach)
- dies ist ein Projekt, das simuliert SQL-in-Prozess, in python. pypi.python.org/pypi/pg13. (faire Warnung: ich schrieb es)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie absolut verwenden müssen, verhöhnt, anstatt das Django Sachen andere erwähnt haben, würde ich empfehlen, entweder Fudge oder Mock.
Wenn Sie mit django, VORRICHTUNGEN kann Ihr problem lösen. Ich weiß wirklich nicht, was du meinst, von mocking-Bibliothek, aber Sie ermöglichen es Ihnen, zu füllen deine db mit Testdaten. Die können Sie dann interaktiv mit für Ihre TestCase. Die test-Daten zerstört wird nach jedem Testfall.
http://docs.djangoproject.com/en/dev/howto/initial-data/
Persönlich Neige ich dazu, zu schreiben, dass meine unit-tests verwenden eine separate test-Datenbank, so dass ich ' ll haben in der Regel eine
testing.conf
- Datei enthält meine Datenbank info getrennt von meiner regulärendevelopment.conf
- und/oderproduction.conf
- Dateien. Das macht meine unit-tests weit mehr wie die tatsächlichen Bedingungen, unter denen der code wird ausgeführt in der Produktion.Ich habe zum Beispiel vor kurzem eine Python-Bibliothek, für die der Benutzer ruft eine Modul-Ebene
initialize
- Funktion übergeben Sie den Namen(s) der config-Datei(en). Dieinitialize
Funktion verwendet dann die ConfigParser - Modul zum Parsen der config-Datei(en), beginnt, was auch immer threads, die es braucht, um laufen, schafft das urllib-Handler, einrichtet, Datenbank-verbindungen, etc.Diese Art von setup ermöglicht eine einfache unit-Tests, da kann man einfach haben Sie Ihre unit-tests nennen, in Ihre
initialize
- Funktion vor der Ausführung übergeben, die in einer config, die Punkte auf Ihrer test-Datenbank.Basierend auf einige der Kommentare, es scheint, du bist mit Django. Wenn das der Fall ist, dann sind Sie gehen zu wollen, verwenden Sie eine Daten-Vorrichtung zum füllen von Testdaten in eine test-Datenbank. Eine hervorragende Ressource zu diesem Thema ist Karen M. Tracey Buch Django 1.1 Testen und Debuggen.
Hier eine Zusammenfassung von dem, was Sie gehen zu wollen, zu tun:
Dump der Daten aus der live Datenbank mit:
ersetzen
{django-app}
mit dem Namen Ihres Django-app.Ort
test_data.json
im Verzeichnis{django-app}/fixtures
Angeben, dass Ihre test-Fall sollte laden Sie die fixture Daten mit:
Für mehr Informationen, zusätzlich zu Karen M. Tracey Buch, die Sie möglicherweise überprüfen Sie heraus Django-Dokumentation Vorrichtung Be -
Gibt es einige konkrete Beispiele für die Verwendung Mock für die Datenbank Test hier:
http://python-mock.sourceforge.net/#example-usage