2009-07-06 23 views
5

Voglio scrivere alcune unittests per un'applicazione che usa MySQL. Tuttavia, non voglio connettermi a un vero database mysql, ma piuttosto a uno temporaneo che non richiede affatto alcun server SQL.test delle applicazioni python che usano mysql

Qualsiasi biblioteca (non ho trovato nulla su google)? Qualche modello di design? Si noti che DIP non funziona poiché dovrò ancora testare la classe iniettata.

+0

provare pypi.python.org/pypi/pg13, che ha un simulatore SQL. avvertimento: l'ho scritto. – amwinter

risposta

8

Non c'è un buon modo per farlo. Vuoi eseguire le tue query su un vero server MySQL, altrimenti non sai se funzioneranno o meno.

Tuttavia, ciò non significa che è necessario eseguirli su un server di produzione. Abbiamo degli script che creano un database di Unit Test e quindi lo abbattono una volta eseguiti i test unitari. In questo modo non dobbiamo mantenere un database di test statico, ma continuiamo a testare il vero server.

4

Ho usato python-mock e mox per tali scopi (estremamente test leggeri che assolutamente non può richiedere qualsiasi server SQL), ma per una più ampia/test approfonditi, l'avvio e la compilazione di un'istanza locale di MySQL non è peccato neanche

Purtroppo il dialetto SQL di SQLite e MySQL sono abbastanza diversi da provare a utilizzare il primo per i test in qualche modo poco pratico, a meno che non si utilizzi un ORM (Django, SQLObject, SQLAlchemy, ...) in grado di nascondere le differenze di dialetto.

Problemi correlati