2009-07-06 9 views
5

Je veux écrire des unittets pour une application qui utilise MySQL. Cependant, je ne veux pas me connecter à une vraie base de données mysql, mais plutôt à une base de données temporaire qui ne nécessite aucun serveur SQL.tester des applications python qui utilisent mysql

N'importe quelle bibliothèque (je n'ai rien trouvé sur google)? Tout modèle de conception? Notez que DIP ne fonctionne pas car je vais encore devoir tester la classe injectée.

+0

Essayez pypi.python.org/pypi/pg13, qui a un simulateur SQL. caveat: je l'ai écrit. – amwinter

Répondre

8

Il n'y a pas un bon moyen de le faire. Vous voulez exécuter vos requêtes sur un vrai serveur MySQL, sinon vous ne savez pas si elles fonctionneront ou non.

Toutefois, cela ne signifie pas que vous devez les exécuter sur un serveur de production. Nous avons des scripts qui créent une base de données de test unitaire, puis l'arrachent une fois que les tests unitaires ont été exécutés. De cette façon, nous n'avons pas besoin de maintenir une base de données de test statique, mais nous continuons à tester le serveur réel.

4

Je l'ai utilisé python-mock et mox à ces fins (extrêmement des tests légers qui ne peut absolument pas besoin tout serveur SQL), mais pour plus large/tests approfondis, le démarrage et alimenter une instance locale de MySQL n'est pas dommage non plus. Malheureusement le dialecte SQL et le MySQL de SQLite diffèrent assez de ce que essayer d'utiliser le premier pour les tests est peu pratique, sauf si vous utilisez un ORM (Django, SQLObject, SQLAlchemy, ...) qui peut cacher les différences de dialecte.

Questions connexes