van.pg

Logiciel capture d'écran:
van.pg
Détails logiciels:
Version: 2.0
Date de transfert: 14 Apr 15
Développeur: Brian Sutherland
Licence: Gratuit
Popularité: 66

Rating: 5.0/5 (Total Votes: 1)

van.pg est un module Python qui permet de créer facilement des bases de données PostgreSQL (grappes) et pour les tests unitaires.
sales Bases de données
bases de données de test prennent beaucoup de temps à créer. En général, vous devez être un peu prudent lorsque vous décidez de supprimer / recréer un dispositif de base de données de test.
En outre, il semble y avoir aucune manière robuste dans PostgreSQL de figurer si une base de données a été commis ou non.
Donc van.pg n'a pas de choix que de placer la responsabilité sur le vous informer quand une base de données est sale. Si ce ne est pas fait correctement, l'isolement de test sera compromise. Ce ne est pas idéal, mais le meilleur que nous pouvons faire.
Une exception est si vous utilisez toujours le paquet de transaction (http://pypi.python.org/pypi/transaction) pour gérer la base de données se engage. Dans ce cas, vous pouvez demander la ressource à sali chaque fois qu'une transaction est engagée.
Intégration avec testResources
La façon typique à utiliser ces appareils se fait par testResources (http://pypi.python.org/pypi/testresources/):
& Nbsp; >>> from testResources importer ResourcedTestCase
& Nbsp; >>> from van.pg DatabaseManager d'importation
& Nbsp; >>> psycopg2 d'importation
& Nbsp; init_db >>> def (db):
& Nbsp; ... conn = psycopg2.connect (host = db.host, base de données = db.database)
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("CREATE TABLE foo (bar entier);")
& Nbsp; ... conn.commit ()
& Nbsp; ... conn.close ()
& Nbsp; >>> classe MyTest (ResourcedTestCase):
& Nbsp; ...
& Nbsp; ... les ressources = [('db', DatabaseManager (initialize_sql = init_db))]
& Nbsp; ...
& Nbsp; ... def runTest (auto):
& Nbsp; ... conn = psycopg2.connect (host = self.db.host, base de données = self.db.database)
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("INSERT INTO VALEURS foo (1);")
& Nbsp; ... conn.commit ()
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("SELECT * FROM foo")
& Nbsp; ... self.assertEquals (cur.fetchall (), [(1,)])
& Nbsp; ... # NOTE: doit fermer les connexions ou de faire tomber des bases de données échoue
& Nbsp; ... conn.close ()
& Nbsp; ... self.db.dirtied () # nous avons changé la DB, donc il a besoin de rechargement
En fait le test:
& Nbsp; >>> from unittest TextTestRunner d'importation
& Nbsp; >>> import sys
& Nbsp; >>> coureur = TextTestRunner (flux = sys.stdout)
& Nbsp; >>> runner.run (MyTest ()) # doctest: + ELLIPSIS
& Nbsp ;.
& Nbsp; ...
& Nbsp; OK
& Nbsp; ...
Bases de données Utilisation de modèles
Si vous avez besoin de recréer les nombreuses fois la même base de données, il peut être plus rapide de laisser la base de données PostgreSQL copier à partir d'une base de données modèle. Vous pouvez le faire en ayant une DatabaseManager servir de modèle pour une autre:
& Nbsp; >>> template_db = DatabaseManager (initialize_sql = init_db)
& Nbsp; >>> MyTest2 de classe (MyTest):
& Nbsp; ... les ressources = [('db', DatabaseManager (template = template_db))]
& Nbsp; >>> runner.run (MyTest2 ()) # doctest: + ELLIPSIS
& Nbsp ;.
& Nbsp; ...
& Nbsp; OK
& Nbsp; ...
transaction intégration
Si le mot-clé argumen dirty_on_commit est vrai, un DatabaseManager marquera la base de données sali après chaque commit fait réussies à travers le module de transaction. Cela signifie que chaque test qui salit la base de données n'a pas à aviser manuellement.
& Nbsp; >>> homme = DatabaseManager (dirty_on_commit = True)
Si vous utilisez cette fonction, vous devez dépendre de la transaction (http://pypi.python.org/pypi/transaction) emballer vous-même.
L'utilisation d'une base de données existante
Par défaut, van.pg crée un nouveau cluster de PostgreSQL dans un répertoire temporaire et lance un démon PostgreSQL. Cela fonctionne la plupart du temps, mais ne est pas très rapide.
Si vous avez un cluster de PostgreSQL déjà en cours, vous pouvez dire van.pg à utiliser en définissant la variable d'environnement VAN_PG_HOST. Par exemple, pour exécuter les tests de van.pg sur un serveur PostgreSQL local avec ses prises dans / tmp / pgcluster faire:
VAN_PG_HOST = / tmp / test de pgcluster python setup.py
AVERTISSEMENT: les bases de données à partir de test_db dans la base de données cible sont susceptibles d'être abandonné.
Connexions fermeture
Veillez à bien fermer toutes les connexions à la base de données une fois que votre test est fait avec elle. PostgreSQL ne permet pas tomber bases de données alors qu'il ya des connexions ouvertes. Cela entraînera van.pg à l'erreur lors de la tentative de supprimer la base de test.
Programatically créer un cluster
A un niveau inférieur, vous pouvez également programmation manipuler votre propre cluster de PostgreSQL.
Initialiser le cluster:
& Nbsp; >>> from Cluster d'importation van.pg
& Nbsp; >>> pôle = Cluster ()
& Nbsp; >>> cluster.initdb ()
Ce qui crée une base de données dans un répertoire temporaire:
& Nbsp; >>> import os
& Nbsp; >>> dbdir = cluster.dbdir
& Nbsp; >>> 'PG_VERSION' dans os.listdir (dbdir)
& Nbsp; Vrai
Démarrez-le:
& Nbsp; >>> cluster.start ()
Créer / tester une base de données:
& Nbsp; >>> dbname = cluster.createdb ()
Nous pouvons nous connecter à la base de données:
& Nbsp; >>> psycopg2 d'importation
& Nbsp; >>> conn = psycopg2.connect (base de données = dbname, host = cluster.dbdir)
& Nbsp; >>> cur = conn.cursor ()
Twiddle la base de données pour se assurer que nous pouvons faire l'essentiel:
& Nbsp; >>> cur.execute ("CREATE TABLE x (y int)")
& Nbsp; >>> cur.execute ("INSERT INTO x VALUES (1)")
& Nbsp; >>> conn.commit ()
& Nbsp; >>> cur.execute ("SELECT * FROM x")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
Arrêtez le démon de cluster:
& Nbsp; >>> conn.close ()
& Nbsp; >>> cluster.stop ()
Lancer à nouveau:
& Nbsp; >>> cluster.start ()
& Nbsp; >>> conn = psycopg2.connect (base de données = dbname, host = cluster.dbdir)
& Nbsp; >>> cur = conn.cursor ()
& Nbsp; >>> cur.execute ("SELECT * FROM x")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
Et le nettoyage:
& Nbsp; >>> conn.close ()
& Nbsp; >>> cluster.cleanup ()
& Nbsp; >>> cluster.dbdir est Aucun
& Nbsp; Vrai
& Nbsp; >>> os.path.exists (dbdir)
& Nbsp; False
Développement
Développement a lieu sur GitHub:
& Nbsp; http: //github.com/jinty/van.pg

Quoi de neuf dans cette version:

  • Support Python 3.2.
  • Chute Python 2.5 soutien.
  • Ajouter tox.ini pour les tests contre plusieurs versions de python.
  • Exécuter PostgreSQL comme un sous-processus plutôt que comme un démon (via pg_ctl).
  • Réorganiser code pour améliorer la réutilisation et la couverture de test.

Exigences :

  • Python

Logiciel similaire

Peptest
Peptest

14 Apr 15

BDD4Django
BDD4Django

20 Feb 15

pytest-timeout
pytest-timeout

20 Feb 15

HOL
HOL

20 Feb 15

D'autres logiciels de développeur Brian Sutherland

wesgi
wesgi

11 May 15

Commentaires à van.pg

Commentaires non trouvées
Ajouter un commentaire
Tourner sur les images!