van.pg.

Ferramentas para gerenciar programaticamente os clusters postgresql como luminárias de teste de Python
Baixe Agora

van.pg. Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • BSD License
  • Nome do editor:
  • Brian Sutherland
  • Site do editor:
  • http://vanguardistas.net

van.pg. Tag


van.pg. Descrição

Ferramentas para gerenciar programaticamente os clusters postgresql como luminárias de teste de Python van.pg é um módulo Python que fornece fácil criação de bancos de dados PostgreSQL (e clusters) para a unidade de bancos de dados testing.Dirty DatabasesTest levar um longo tempo para criar. Em geral, você precisa ser um pouco cuidadoso quando você decidir excluir / recriar um banco de dados de teste fixture.Also, não parece haver nenhuma maneira robusta em PostgreSQL de descobrir se um banco de dados foi comprometida ou not.So van.pg não tem escolha a não ser colocar a responsabilidade sobre o que você notificá-lo quando um banco de dados está sujo. Se isso não for feito corretamente, o isolamento de teste será comprometida. Não é o ideal, mas o melhor que podemos do.One exceção é se você usar consistentemente o pacote de transação (http://pypi.python.org/pypi/transaction) para gerenciar commits banco de dados. Neste caso, você pode pedir para o recurso a ser sujou sempre que uma transação é committed.Integration com testresourcesThe maneira típica de usar estes jogos é através testresources (http://pypi.python.org/pypi/testresources/): >>> de testresources importar ResourcedTestCase >>> de van.pg importação DatabaseManager >>> importação psycopg2 >>> def init_db (db): ... conn = psycopg2.connect (host = db.host, base de dados = db.database) .. . cur = conn.cursor () ... cur.execute ( "CREATE TABLE foo (bar INTEIRO);") ... conn.commit () ... conn.close () >>> class MyTest (ResourcedTestCase) : ... ... recursos = ... ... def runTest (self): ... conn = psycopg2.connect (host = self.db. host, database = self.db.database) ... cur = conn.cursor () ... cur.execute ( "valores INSERT INTO foo (1);") ... conn.commit () ... cur = conn.cursor () ... cur.execute ( "SELECT * FROM foo") ... self.assertEquals (cur.fetchall (), ) ... # NOTA: deve fechar conexões ou largando bancos de dados falhar ... conn.close () ... self.db.dirtied () # mudamos a DB, por isso precisa re-loadingActually executar o teste: >>> from unittest TextTestRunner importação >>> import sys >>> corredor = TextTestRunner ( fluxo = sys.stdout) >>> runner.run (MeuTeste ()) # doctest: + ELLIPSIS. ... OK ... Usando modelo databasesIf você precisa recriar o mesmo banco de dados muitas vezes, pode ser mais rápido para deixar copiar PostgreSQL banco de dados a partir de um banco de dados modelo. Você pode fazer isso por ter um DatabaseManager servir como modelo para outro: >>> template_db = DatabaseManager (initialize_sql = init_db) >>> class MyTest2 (MyTest): ... recursos = >>> runner.run (MyTest2 ()) # doctest: + ELLIPSIS. ... OK ... transação integrationIf a palavra-chave argumen dirty_on_commit for True, um DatabaseManager irá marcar o banco de dados como sujou após cada bem sucedido commit feita através do módulo de transação. Isto significa que cada teste que suja o banco de dados não tem que notificá-la manualmente. >>> homem = DatabaseManager (dirty_on_commit = True) Se você usar esse recurso, você precisa dependem do pacote (http://pypi.python.org/pypi/transaction) transação yourself.Using um padrão databaseBy existente, van. pg cria um novo cluster PostgreSQL em um diretório temporário e lança um daemon PostgreSQL. Isso funciona na maioria das vezes, mas não é muito fast.If você tem um cluster PostgreSQL já em execução, você pode dizer van.pg para usá-lo, definindo a variável de ambiente VAN_PG_HOST. Por exemplo, para executar testes de van.pg contra um servidor PostgreSQL local com ele é soquetes em / tmp / PGCluster fazer: VAN_PG_HOST = / tmp / PGCluster python setup.py testWARNING: qualquer banco de dados começando com test_db no banco de dados de destino são propensos a ser descartado .Closing ConnectionsBe o cuidado de corretamente fechar todas as conexões com o banco de dados uma vez que seu teste é feito com ele. O PostgreSQL não permitir cair bases de dados enquanto houver conexões abertas. Isso fará com que van.pg de erro ao tentar largar o teste database.Programatically criando um clusterAt um nível mais baixo, você também pode manipular programaticamente seu próprio PostgreSQL cluster.Initialize do Cluster: >>> from van.pg Cluster importação >>> aglomerado = Cluster () >>> cluster.initdb () que cria um banco de dados em um diretório temporário: >>> import os >>> dbdir = cluster.dbdir >>> 'PG_VERSION' em os.listdir (dbdir) TrueStart-lo : >>> cluster.start () Criar / Teste de um banco de dados: >>> dbname = cluster.createdb () Nós podemos conectar ao banco de dados: >>> import psycopg2 >>> conn = psycopg2.connect (banco de dados = dbname, host = cluster.dbdir) >>> cur = conn.cursor () Giro o banco de dados para se certificar de que podemos fazer o básico: >>> cur.execute ( "CREATE TABLE x (y int)") >>> cur. executar ( "INSERÇÃO EM valores de x (1)") >>> conn.commit () >>> cur.execute ( "SELECT * de x") >>> cur.fetchall () a 1Stop daemon cluster: >>> conn.close () >>> cluster.stop () começar de novo: >>> cluster.start () >>> conn = psycopg2.connect (base de dados = Nome_do_bd, anfitrião = cluster.dbdir) >>> cur = conn.cursor () >>> cur.execute ( "SELECT * de x") >>> cur.fetchall () 1 E limpeza: >>> conn.close () >>> cluster.cleanup () >>> cluster.dbdir é Nenhum verdadeiro >>> os.path.exists (dbdir) FalseDevelopmentDevelopment ocorre no GitHub: http://github.com/ Jinty / Requisitos van.pg: · Pitão


van.pg. Software Relacionado

Teste rápido

Programa usado para testar a velocidade do código Java em várias plataformas de computador. ...

175

Download

ftfy.

Corrige alguns problemas com o texto Unicode após o fato ...

109

Download