van.pg

Phần mềm chụp màn hình:
van.pg
Các chi tiết về phần mềm:
Phiên bản: 2.0
Ngày tải lên: 14 Apr 15
Nhà phát triển: Brian Sutherland
Giấy phép: Miễn phí
Phổ biến: 5

Rating: nan/5 (Total Votes: 0)

van.pg là một mô-đun Python cung cấp dễ dàng tạo ra cơ sở dữ liệu PostgreSQL (cụm) cho kiểm tra đơn vị.
Bẩn Databases
Cơ sở dữ liệu thử nghiệm mất nhiều thời gian để tạo ra. Nói chung, bạn cần phải có một chút cẩn thận khi bạn quyết định xóa / tạo một cơ sở dữ liệu thử nghiệm vật cố.
Ngoài ra, có vẻ là không có cách mạnh mẽ trong PostgreSQL việc phải tìm hiểu nếu một cơ sở dữ liệu đã được cam kết hay không.
Vì vậy van.pg không có lựa chọn nhưng để đặt trách nhiệm trên các bạn để thông báo cho nó khi một cơ sở dữ liệu là bẩn. Nếu điều này không được thực hiện đúng cách, kiểm tra cách ly sẽ bị tổn hại. Đó không phải là lý tưởng, nhưng tốt nhất chúng tôi có thể làm.
Một ngoại lệ là nếu bạn thường xuyên sử dụng các gói giao dịch (http://pypi.python.org/pypi/transaction) để quản lý cơ sở dữ liệu cam kết. Trong trường hợp này, bạn có thể yêu cầu các tài nguyên được bẩn mỗi khi một giao dịch được thực hiện.
Tích hợp với testresources
Cách thông thường để sử dụng các trang thiết bị như qua testresources (http://pypi.python.org/pypi/testresources/):
& Nbsp; >>> từ testresources nhập ResourcedTestCase
& Nbsp; >>> từ van.pg DatabaseManager nhập khẩu
& Nbsp; >>> nhập psycopg2
& Nbsp; >>> def init_db (db):
& Nbsp; ... conn = psycopg2.connect (host = db.host, cơ sở dữ liệu = db.database)
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("CREATE TABLE foo (bar INTEGER);")
& Nbsp; ... conn.commit ()
& Nbsp; ... conn.close ()
& Nbsp; >>> class mytest (ResourcedTestCase):
& Nbsp; ...
& Nbsp; ... nguồn = [('db', DatabaseManager (initialize_sql = init_db))]
& Nbsp; ...
& Nbsp; ... def runTest (tự):
& Nbsp; ... conn = psycopg2.connect (host = self.db.host, cơ sở dữ liệu = self.db.database)
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("INSERT INTO GIÁ TRỊ foo (1);")
& Nbsp; ... conn.commit ()
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("SELECT * FROM foo")
& Nbsp; ... self.assertEquals (cur.fetchall (), [(1)])
& Nbsp; ... # Chú ý: phải đóng các kết nối cơ sở dữ liệu hoặc bỏ không
& Nbsp; ... conn.close ()
& Nbsp; ... self.db.dirtied () # chúng ta thay đổi DB, vì vậy nó cần tái nạp
Trên thực tế chạy thử nghiệm:
& Nbsp; >>> từ unittest TextTestRunner nhập khẩu
& Nbsp; >>> sys nhập khẩu
& Nbsp; >>> runner = TextTestRunner (stream = sys.stdout)
& Nbsp; >>> runner.run (mytest ()) # doctest: + lược từ
& Nbsp ;.
& Nbsp; ...
& Nbsp; OK
& Nbsp; ...
Cơ sở dữ liệu Sử dụng template
Nếu bạn cần phải tạo lại cơ sở dữ liệu tương tự nhiều lần, nó có thể được nhanh hơn để cho PostgreSQL sao chép cơ sở dữ liệu từ cơ sở dữ liệu mẫu. Bạn có thể làm điều này bằng cách có một DatabaseManager phục vụ như là một khuôn mẫu cho một:
& Nbsp; >>> template_db = DatabaseManager (initialize_sql = init_db)
& Nbsp; >>> class MyTest2 (mytest):
& Nbsp; ... nguồn = [('db', DatabaseManager (template = template_db))]
& Nbsp; >>> runner.run (MyTest2 ()) # doctest: + lược từ
& Nbsp ;.
& Nbsp; ...
& Nbsp; OK
& Nbsp; ...
tích hợp giao dịch
Nếu từ khóa argumen dirty_on_commit là True, một DatabaseManager sẽ đánh dấu các cơ sở dữ liệu như bẩn sau mỗi thành công cam kết thực hiện thông qua các mô-đun giao dịch. Điều này có nghĩa là mỗi bài kiểm tra mà gây bẩn sở dữ liệu không phải tự khai báo cho nó.
& Nbsp; >>> man = DatabaseManager (dirty_on_commit = True)
Nếu bạn sử dụng tính năng này, bạn cần phải phụ thuộc vào các giao dịch (http://pypi.python.org/pypi/transaction) đóng gói chính mình.
Sử dụng một cơ sở dữ liệu hiện có
Theo mặc định, van.pg tạo ra một cụm PostgreSQL mới trong một thư mục tạm thời và khởi chạy một daemon PostgreSQL. Điều này làm việc phần lớn thời gian, nhưng không phải là rất nhanh.
Nếu bạn có một cụm PostgreSQL đang chạy, bạn có thể nói van.pg để sử dụng nó bằng cách thiết lập các biến môi trường VAN_PG_HOST. Ví dụ, để chạy thử nghiệm van.pg chống lại một máy chủ PostgreSQL địa phương với nó là ổ cắm trong / tmp / pgcluster làm:
VAN_PG_HOST = / tmp / pgcluster python thi setup.py
Chú ý: bất kỳ cơ sở dữ liệu bắt đầu với test_db trong cơ sở dữ liệu mục tiêu có thể sẽ được giảm xuống.
Đóng Connections
Hãy cẩn thận để đóng đúng tất cả các kết nối cơ sở dữ liệu một lần thử nghiệm của bạn được thực hiện với nó. PostgreSQL không cho phép bỏ cơ sở dữ liệu trong khi có những kết nối mở. Điều này sẽ gây ra van.pg lỗi khi đang cố gắng xóa cơ sở dữ liệu thử nghiệm.
Programatically tạo ra một cụm
Ở một mức độ thấp hơn, bạn cũng có thể lập trình thao tác cụm PostgreSQL của riêng bạn.
Khởi tạo Cluster:
& Nbsp; >>> từ van.pg Cụm nhập khẩu
& Nbsp; >>> cụm = Cluster ()
& Nbsp; >>> cluster.initdb ()
Mà tạo ra một cơ sở dữ liệu trong một thư mục tạm thời:
& Nbsp; >>> import os
& Nbsp; >>> dbdir = cluster.dbdir
& Nbsp; >>> 'PG_VERSION' trong os.listdir (dbdir)
& Nbsp; Đúng
Bắt đầu nó:
& Nbsp; >>> cluster.start ()
Tạo / Kiểm tra một cơ sở dữ liệu:
& Nbsp; >>> dbname = cluster.createdb ()
Chúng tôi có thể kết nối với cơ sở dữ liệu:
& Nbsp; >>> nhập psycopg2
& Nbsp; >>> conn = psycopg2.connect (database = dbname, host = cluster.dbdir)
& Nbsp; >>> cur = conn.cursor ()
Quay vòng các cơ sở dữ liệu để đảm bảo rằng chúng tôi có thể làm được những điều cơ bản:
& Nbsp; >>> cur.execute ("CREATE TABLE x (y int)")
& Nbsp; >>> cur.execute ("INSERT INTO x VALUES (1)")
& Nbsp; >>> conn.commit ()
& Nbsp; >>> cur.execute ("SELECT * từ x")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
Dừng daemon cluster:
& Nbsp; >>> conn.close ()
& Nbsp; >>> cluster.stop ()
Bắt đầu lại một lần nữa:
& Nbsp; >>> cluster.start ()
& Nbsp; >>> conn = psycopg2.connect (database = dbname, host = cluster.dbdir)
& Nbsp; >>> cur = conn.cursor ()
& Nbsp; >>> cur.execute ("SELECT * từ x")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
Và dọn dẹp:
& Nbsp; >>> conn.close ()
& Nbsp; >>> cluster.cleanup ()
& Nbsp; >>> cluster.dbdir là None
& Nbsp; Đúng
& Nbsp; >>> os.path.exists (dbdir)
& Nbsp; False
Phát triển
Phát triển diễn ra trên GitHub:
& Nbsp; http: //github.com/jinty/van.pg

là gì mới trong phiên bản này:

  • Hỗ trợ Python 3.2.
  • Drop hỗ trợ Python 2.5.
  • Thêm tox.ini để thử nghiệm với nhiều phiên bản python.
  • Run PostgreSQL là một tiến trình chứ không phải là một daemon (qua pg_ctl).
  • Re-tổ chức mã để cải thiện việc tái sử dụng và kiểm tra bảo hiểm.

Yêu cầu :

  • Python

Phần mềm tương tự

Testify
Testify

20 Feb 15

STK/Unit
STK/Unit

20 Feb 15

Phần mềm khác của nhà phát triển Brian Sutherland

wesgi
wesgi

11 May 15

Ý kiến ​​để van.pg

Bình luận không
Nhập bình luận
Bật hình ảnh!