Je peux peut-être vous donner un avant-goût de notre expérience lorsque nous avons commencé à regarder les tests unitaires notre intermédiaire des processus qui inclus une tonne de "logique d'entreprise" les opérations sql.
Nous avons d'abord créé une couche d'abstraction qui nous a permis de "fente" raisonnable connexion de base de données (dans notre cas, nous avons simplement pris en charge un seul ODBC-type de connexion).
Une fois cela en place, nous étions alors en mesure de faire quelque chose comme cela dans notre code, nous travaillons dans le C++, mais je suis sûr que vous voyez l'idée):
GetDatabase().ExecuteSQL( "INSERT INTO foo ( bla, bla )" )
Au terme normal de l'heure, GetDatabase() retourne un objet qui les a nourris tous nos sql (y compris les requêtes), via ODBC directement à la base de données.
Ensuite, nous avons commencé à regarder les bases de données en mémoire - le meilleur par un long chemin semble être SQLite. (http://www.sqlite.org/index.html). Il est très simple à configurer et à utiliser, et nous a permis de sous-classe et remplacer GetDatabase() pour envoyer sql à une base de données en mémoire qui a été créé et détruit pour chaque test effectué.
Nous sommes encore dans les premiers stades de cela, mais il a l'air bon jusqu'ici, cependant, nous ne devons créer toutes les tables qui sont nécessaires et de les remplir avec des données de test - cependant, nous avons réduit la charge de travail un peu ici par la création d'un ensemble générique de fonctions d'assistance qui peut faire beaucoup de tout cela pour nous.
Dans l'ensemble, il a aidé énormément avec nos TDD processus, depuis ce qui me semble tout à fait inoffensif changements pour corriger certains bugs peuvent avoir assez étrange, les répercussions sur les autres (difficile à détecter) les zones de votre système en raison de la nature même des bases de données/sql.
Évidemment, nos expériences ont centré autour d'un environnement de développement C++, mais je suis sûr que vous pourriez peut-être obtenir quelque chose de semblable de travail sous PHP/Python.
Espérons que cette aide.