van.pg

ソフトウェアのスクリーンショット:
van.pg
ソフトウェアの詳細:
バージョン: 2.0
日付のアップロード: 14 Apr 15
開発者: Brian Sutherland
ライセンス: 無料
人気: 66

Rating: 5.0/5 (Total Votes: 1)

van.pgは、ユニットテストのためのPostgreSQLデータベース(およびクラスタ)を簡単に作成を提供Pythonモジュールです。
のダーティデータベース
テスト·データベースを作成するのに長い時間がかかる。一般的に、あなたはテスト·データベース·フィクスチャを再作成/削除することを決定したときに少し注意する必要があります。
また、データベースはにコミットされたかどうかを考え出すのはPostgreSQLには堅牢な方法はないように思われる。
だからvan.pgは、データベースが汚れているときにそれを通知するためにあなたに責任を配置する以外に選択肢がありません。これが適切に行われない場合、テスト分離が損なわれることになる。それは理想的ではないですが、私たちにできる最善。
あなたは一貫して、データベースのコミットを管理するために、トランザクション·パッケージ(http://pypi.python.org/pypi/transaction)を使用する場合は、1つの例外はある。このケースでは、トランザクションがコミットされるたびに汚されるリソースを求めることができます。
のtestresourcesとの統合
これらの器具を使用するための一般的な方法は、testresources(http://pypi.python.org/pypi/testresources/)を経由する:
 は>>> testresourcesからResourcedTestCaseをインポート
  >>> van.pg輸入のDatabaseManagerから
  >>>輸入psycopg2
  >>> DEF(DB)INIT_DB:
  ... CONN = psycopg2.connect(ホスト= db.host、データベース= db.database)
  ... CUR = conn.cursor()
  ... cur.execute( "TABLE fooの(バー整数)を作成します。」)
  ... conn.commit()
  ...はconn.close()
  >>>クラスのMyTest(ResourcedTestCase):
  ...
  ...資源= [( 'db'と、のDatabaseManager(initialize_sql = INIT_DB))]
  ...
  ... DEF runTestの(自己):
  ... CONN = psycopg2.connect(ホスト= self.db.host、データベース= self.db.database)
  ... CUR = conn.cursor()
  ... cur.execute(「(1)fooの値に挿入します。」)
  ... conn.commit()
  ... CUR = conn.cursor()
  ... cur.execute(「* fooの中から選択」)
  ... self.assertEquals(cur.fetchall()、[(1)])
  ...#注意:データベースに障害が発生した接続を閉じたり、ドロップする必要があります
  ...はconn.close()
  ... self.db.dirtied()#我々は、DBを変更したので、再ロードを必要とする
実際にテストを実行します。
  >>> unittestの輸入TextTestRunnerから
  >>>輸入SYS
  >>>ランナー= TextTestRunner(ストリーム= sys.stdoutの)
  >>> runner.run(MyTestに())■doctestの:+ ELLIPSIS
&NBSP ;.
  ...
OK;&NBSP
  ...
のテンプレートデータベースを使用して
あなたが同じデータベースを何度も再作成する必要がある場合は、PostgreSQLがテンプレートデータベースからデータベースをコピーできるように速くなります。あなたは1のDatabaseManagerが別のテンプレートとして機能させることによってこれを行うことができます:
  >>> template_db =のDatabaseManager(initialize_sql = INIT_DB)
  >>>クラスMytest2の(MyTestという):
  ...資源= [( 'db'と、のDatabaseManager(テンプレート= template_db))]
  >>> runner.run(Mytest2の())■doctestの:+ ELLIPSIS
&NBSP ;.
  ...
OK;&NBSP
  ...
のトランザクションの統合
dirty_on_commit argumenキーワードがTrueの場合、のDatabaseManagerは、すべてのトランザクション·モジュールを介して行わコミットsuccessfull後に汚れるように、データベースをマークします。これは、データベースが手動でそれを通知する必要がない汚し各テストを意味します。
  >>>男=のDatabaseManager(dirty_on_commit =真)
この機能を使用する場合は、トランザクション(http://pypi.python.org/pypi/transaction)を自分でパッケージに依存する必要があります。
の既存のデータベースを使用して、
デフォルトでは、van.pgは一時ディレクトリに新しいPostgreSQLクラスタを作成し、PostgreSQLのデーモンを起動します。これは、ほとんどの時間を動作しますが、非常に高速ではありません。
すでに稼動しているPostgreSQLクラスタをお持ちの場合は、環境変数VAN_PG_HOSTを設定することでそれを使用するvan.pg伝えることができます。例えば、ローカルのPostgreSQLサーバに対​​してvan.pgのテストを実行することが/ tmpに/ pgclusterでソケットが何です:
VAN_PG_HOST =を/ tmp / pgclusterのpython setup.pyテスト
警告:ターゲット·データベースにTEST_DBで始まるすべてのデータベースがドロップされる可能性が高い。
の閉会の接続
あなたの試験はそれで行われた後、適切にデータベースへのすべての接続を閉じるように注意してください。オープン接続がある間PostgreSQLはデータベースをドロップすることはできません。これはテスト·データベースを削除しようとするとエラーにvan.pg原因となります。
のプログラムにより作成クラスター
低いレベルでは、また、プログラム独自のPostgreSQLクラスタを操作することができます。
クラスタを初期化します。
  >>> van.pg輸入クラスタから
  >>>クラスタ=クラスタ()
  >>> cluster.initdb()
どの一時ディレクトリにデータベースを作成します:
  >>>輸入OS
  >>> DBDIR = cluster.dbdir
 でos.listdirで>>>「PG_VERSION '(DBDIR)
 真
それを起動します。
  >>> cluster.start()
の作成/データベースをテストします。
  >>> DBNAME = cluster.createdb()
私たちは、データベースに接続できます。
  >>>輸入psycopg2
  >>> CONN = psycopg2.connect(データベース= DBNAME、ホスト= cluster.dbdir)
  >>> CUR = conn.cursor()
私たちは基本を行うことができますことを確認するためにデータベースをひねり:
  >>> cur.execute(「表X(Y int型)を作成します」)
  >>> cur.execute(「X値。INSERT INTO(1)」)
  >>> conn.commit()
  >>> cur.execute(「* Xから選択」)
  >>> cur.fetchall()[0] [0]
  1
クラスタデーモンを停止します。
  >>>はconn.close()
  >>> cluster.stop()
再びそれを起動します。
  >>> cluster.start()
  >>> CONN = psycopg2.connect(データベース= DBNAME、ホスト= cluster.dbdir)
  >>> CUR = conn.cursor()
  >>> cur.execute(「* Xから選択」)
  >>> cur.fetchall()[0] [0]
  1
とクリーンアップ:
  >>>はconn.close()
  >>> cluster.cleanup()
  >>> cluster.dbdirはNoneです
 真
  >>> os.path.exists(DBDIR)
&NBSPはFalse
の開発
開発がGitHubの上で行われます:
  HTTP://github.com/jinty/van.pg

のこのリリースではの新機能:

  • サポートPythonの3.2ます。
  • ドロップはPython 2.5をサポートします。
  • 複数のPythonのバージョンに対するテストのためtox.iniを追加します。
  • ファイル名を指定して実行PostgreSQLのサブプロセスとしてではなく、(pg_ctlを経由して)デーモンとしてします。
  • の再整理、再利用およびテストカバレッジを向上させるためのコードをします。

の要件

  • のPythonます。

同じようなソフトウェア

Sahi
Sahi

14 Apr 15

Apache AntUnit
Apache AntUnit

11 May 15

Jensor
Jensor

2 Jun 15

pyVows
pyVows

20 Feb 15

開発者の他のソフトウェア Brian Sutherland

wesgi
wesgi

11 May 15

へのコメント van.pg

コメントが見つかりません
コメントを追加
画像をオンにする!