van.pg

Yazılım ekran görüntüsü:
van.pg
Yazılım detaylar:
Versiyon: 2.0
Qayıt: 14 Apr 15
Geliştirici: Brian Sutherland
Lisans: Ücretsiz
Popülerlik: 5

Rating: nan/5 (Total Votes: 0)

van.pg birim test için PostgreSQL veritabanları (ve kümeler) kolay oluşturulmasını sağlayan bir Python modülü.
Kirli Veritabanları
Deney veritabanları oluşturmak için uzun bir zaman alabilir. Eğer / silme test veritabanı fikstür yeniden karar Genel olarak biraz dikkatli olmak gerekir.
Ayrıca, bir veritabanı taahhüt veya eğer bulmaktan PostgreSQL hiçbir sağlam yol gibi görünüyor.
Yani van.pg bir veritabanı kirli olduğunda bunu bildirmek için size sorumluluk yerleştirmek için çaresi yoktur. Bu doğru yapılmadığı takdirde, deney izolasyon tehlikeye edilecektir. Biz yapabileceğimiz en iyi ideal değil ama.
Eğer sürekli veritabanı taahhüt yönetmek için işlem paketi (http://pypi.python.org/pypi/transaction) kullanmak eğer bir istisna. Bu durumda bir işlem kararlıdır her kirlenebilir için kaynak talep edebilirsiniz.
testresources ile entegrasyon
Bu fikstür kullanmak için tipik bir yol (http://pypi.python.org/pypi/testresources/) testresources üzerinden gerçekleştirilir:
& Nbsp; >>> testresources ResourcedTestCase ithal gelen
& Nbsp; >>> van.pg ithalat DatabaseManager gelen
& Nbsp; >>> import psycopg2
& Nbsp; >>> def (db) init_db:
& Nbsp; ... bağl = psycopg2.connect (konak = db.host, veritabanı = db.database)
& Nbsp; ... aradaki = conn.cursor ()
& Nbsp; ... cur.execute ("TABLO foo (bar INTEGER) CREATE;")
& Nbsp; ... conn.commit ()
& Nbsp; ... Conn.Close ()
& Nbsp; >>> sınıf MyTest (ResourcedTestCase):
& Nbsp; ...
& Nbsp; ... kaynakları = [('db, DatabaseManager (initialize_sql = init_db))]
& Nbsp; ...
& Nbsp; ... def runTest (öz):
& Nbsp; ... bağl = psycopg2.connect (konak = self.db.host, veritabanı = self.db.database)
& Nbsp; ... aradaki = conn.cursor ()
& Nbsp; ... cur.execute ("(1) foo VALUES INSERT INTO;")
& Nbsp; ... conn.commit ()
& Nbsp; ... aradaki = conn.cursor ()
& Nbsp; ... cur.execute ("* foo SEÇ")
& Nbsp; ... self.assertEquals (cur.fetchall (), [(1)])
& Nbsp; ... # NOT: bağlantıları kapatmak veya veritabanları bırakarak başarısız gerekir
& Nbsp; ... Conn.Close ()
& Nbsp; ... self.db.dirtied () # biz DB değişti, bu yüzden yeniden yükleme ihtiyacı
Aslında testi çalıştırın:
& Nbsp; >>> unittest ithalat TextTestRunner gelen
& Nbsp; >>> import sys
& Nbsp; >>> koşucu = TextTestRunner (akım = sys.stdout)
& Nbsp; >>> runner.run (MyTest ()) # doctest.testmod: + üç nokta
& Nbsp ;.
& Nbsp; ...
Tamam; & nbsp
& Nbsp; ...
kullanma şablonu veritabanları
Eğer aynı veritabanı birçok kez yeniden gerekiyorsa, o PostgreSQL bir şablon veritabanından veritabanına kopyalamak izin hızlı olabilir. Sen bir DatabaseManager diğeri için şablon olarak hizmet alarak bunu yapabilirsiniz:
& Nbsp; >>> template_db = DatabaseManager (initialize_sql = init_db)
& Nbsp; >>> sınıf MyTest2 (MyTest):
& Nbsp; ... kaynaklar = [('db', DatabaseManager (şablon = template_db))]
& Nbsp; >>> runner.run (MyTest2 ()) # doctest.testmod: + üç nokta
& Nbsp ;.
& Nbsp; ...
Tamam; & nbsp
& Nbsp; ...
işlem entegrasyonu
Dirty_on_commit argumen kelime Doğru ise, bir DatabaseManager her işlem modülü üzerinden yapılan tamamlama Başarılı sonra kirlenmiş gibi veritabanı işaretler. Bu elle bildirmek zorunda değildir veritabanını çamur her test anlamına gelir.
& Nbsp; >>> adam = DatabaseManager (dirty_on_commit = true)
Bu özelliği kullanırsanız, size işlem (http://pypi.python.org/pypi/transaction) kendinizi paket bağlıdır gerekir.
varolan bir veritabanını kullanarak
Varsayılan olarak, van.pg geçici bir dizinde yeni bir PostgreSQL küme oluşturur ve PostgreSQL daemon başlattı. Bu çoğu zaman çalışır, ama çok hızlı değil.
Eğer zaten çalışan PostgreSQL küme varsa, ortam değişkeni VAN_PG_HOST ayarlayarak kullanmak için van.pg söyleyebilirim. Do it / tmp / pgcluster soketleri var örneğin, yerel bir PostgreSQL sunucusu karşı van.pg adlı testleri çalıştırmak için:
VAN_PG_HOST = / tmp / pgcluster python setup.py testi
UYARI: Herhangi bir veritabanı hedef veritabanında test_db ile başlayan düştü olması muhtemeldir.
Kapanış Bağlantılar
Test onunla yaptıktan sonra düzgün veritabanına tüm bağlantıları kapatmak için dikkatli olun. Açık bağlantıları varken PostgreSQL veritabanları bırakarak izin vermez. Bu test veritabanı damla çalışırken hata van.pg neden olur.
Programlama yaratan bir küme
Düşük düzeyde, ayrıca programlı kendi PostgreSQL küme işleyebilirsiniz.
Cluster başlatılamıyor:
& Nbsp; >>> van.pg ithalat Kümeden
& Nbsp; >>> Küme = Küme ()
& Nbsp; >>> cluster.initdb ()
Hangi geçici dizinde bir veritabanı oluşturur:
& Nbsp; >>> import os
& Nbsp; >>> dbdir = cluster.dbdir
& Nbsp; os.listdir içinde >>> 'PG_VERSION' (dbdir)
& Nbsp; Doğru
Başlatın:
& Nbsp; >>> cluster.start ()
Bir veritabanı test / Yarat:
& Nbsp; >>> dbname = cluster.createdb ()
Biz veritabanına bağlanabilirsiniz:
& Nbsp; >>> import psycopg2
& Nbsp; >>> bağl = psycopg2.connect (veritabanı = dbname, ev sahibi = cluster.dbdir)
& Nbsp; >>> cur = conn.cursor ()
Biz temel yapabiliriz emin olmak için veritabanı twiddle:
& Nbsp; >>> cur.execute (") TABLO x (y int CREATE")
& Nbsp; >>> cur.execute ("(x VALUES INTO 1 INSERT)")
& Nbsp; >>> conn.commit ()
& Nbsp; >>> cur.execute ("* x SELECT")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
Küme cini Dur:
& Nbsp; >>> Conn.Close ()
& Nbsp; >>> cluster.stop ()
Yeniden başlatmak:
& Nbsp; >>> cluster.start ()
& Nbsp; >>> bağl = psycopg2.connect (veritabanı = dbname, ev sahibi = cluster.dbdir)
& Nbsp; >>> cur = conn.cursor ()
& Nbsp; >>> cur.execute ("* x SELECT")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
Ve temizleme:
& Nbsp; >>> Conn.Close ()
& Nbsp; >>> cluster.cleanup ()
& Nbsp; >>> cluster.dbdir Yok olan
& Nbsp; Doğru
& Nbsp; >>> os.path.exists (dbdir)
& Nbsp; Yanlış
Geliştirme
Kalkınma GitHub üzerinde yer alır:
& Nbsp; http: //github.com/jinty/van.pg

Bu sürümde Yeni nedir:

  • Destek Python 3.2.
  • Bırak Python 2.5 desteği.
  • Birden python sürümleri karşı test için tox.ini ekleyin.
  • Çalıştır PostgreSQL alt süreç olarak yerine (pg_ctl yoluyla) bir daemon olarak.
  • yeniden düzenlemek yeniden kullanımı ve test kapsamını artırmak için kodu.

Gereksinimler :

  • Python

Benzer yazılım

SpeedTest
SpeedTest

12 May 15

Fixtures
Fixtures

14 Apr 15

nose2
nose2

20 Feb 15

Geliştirici Diğer yazılım Brian Sutherland

wesgi
wesgi

11 May 15

Yorumlar van.pg

Yorum Bulunamadı
Yorum eklemek
Görüntülerde açın!