van.pg

ภาพหน้าจอของซอฟแวร์:
van.pg
รายละเอียดซอฟแวร์:
รุ่น: 2.0
วันที่อัพโหลด: 14 Apr 15
ผู้พัฒนา: Brian Sutherland
การอนุญาต: ฟรี
ความนิยม: 5

Rating: nan/5 (Total Votes: 0)

van.pg เป็นโมดูลหลามที่ให้การสร้างที่ง่ายของฐานข้อมูล PostgreSQL (และกลุ่ม) สำหรับการทดสอบหน่วย
ฐานข้อมูลสกปรก
ฐานข้อมูลการทดสอบที่ใช้เวลานานในการสร้าง โดยทั่วไปคุณจะต้องมีเล็ก ๆ น้อย ๆ ความระมัดระวังเมื่อคุณตัดสินใจที่จะลบ / สร้างการติดตั้งฐานข้อมูลการทดสอบ
นอกจากนี้ยังมีดูเหมือนว่าจะไม่มีวิธีที่มีประสิทธิภาพใน PostgreSQL ของการหาถ้าฐานข้อมูลได้รับการมุ่งมั่นที่จะได้หรือไม่
ดังนั้น van.pg ไม่มีทางเลือกที่จะวางความรับผิดชอบในการที่คุณจะแจ้งให้มันเมื่อฐานข้อมูลสกปรก ถ้าไม่ทำอย่างถูกต้องแยกการทดสอบจะถูกทำลาย มันไม่เหมาะ แต่สิ่งที่ดีที่สุดที่เราสามารถทำได้
หนึ่งข้อยกเว้นคือถ้าคุณอย่างสม่ำเสมอใช้แพคเกจการทำธุรกรรม (http://pypi.python.org/pypi/transaction) ในการจัดการฐานข้อมูลกระทำ ในกรณีนี้คุณสามารถขอทรัพยากรที่จะจองจำเ​​มื่อใดก็ตามที่การทำธุรกรรมมีความมุ่งมั่น
บูรณาการกับ testresources
วิธีการทั่วไปที่จะใช้การแข่งขันเหล่านี้จะผ่าน testresources (http://pypi.python.org/pypi/testresources/):
& nbsp; >>> นำเข้าจาก testresources ResourcedTestCase
& nbsp; >>> จาก van.pg นำเข้า DatabaseManager
& nbsp; >>> นำเข้า psycopg2
& nbsp; >>> def init_db (DB):
& nbsp; ... conn = psycopg2.connect (host = db.host ฐานข้อมูล = db.database)
& nbsp; ... CUR = conn.cursor ()
& nbsp; ... cur.execute ("สร้างตาราง foo (แถบจำนวนเต็ม);")
& nbsp; ... conn.commit ()
& nbsp; ... conn.close ()
& nbsp; >>> ชั้น MyTest (ResourcedTestCase):
& nbsp; ...
& nbsp; ... ทรัพยากร = [('ฐาน', DatabaseManager (initialize_sql = init_db))]
& nbsp; ...
& nbsp; ... def runTest (ตัวเอง):
& nbsp; ... conn = psycopg2.connect (host = self.db.host ฐานข้อมูล = self.db.database)
& nbsp; ... CUR = conn.cursor ()
& nbsp; ... cur.execute ("INSERT INTO foo VALUES (1);")
& nbsp; ... conn.commit ()
& nbsp; ... CUR = conn.cursor ()
& nbsp; ... cur.execute ("SELECT * FROM foo")
& nbsp; ... self.assertEquals (cur.fetchall () [(1)])
& nbsp; ... # หมายเหตุ: ต้องปิดการเชื่อมต่อหรือฐานข้อมูลล้มเหลวลดลง
& nbsp; ... conn.close ()
& nbsp; ... self.db.dirtied () # เราเปลี่ยน DB ดังนั้นจึงต้องการอีกครั้งโหลด
ที่จริงเรียกใช้การทดสอบ:
& nbsp; >>> จากการนำเข้า UnitTest TextTestRunner
& nbsp; >>> นำเข้า SYS
& nbsp; >>> วิ่ง = TextTestRunner (stream = sys.stdout)
& nbsp; >>> runner.run (MyTest ()) # doctest: + จุดไข่ปลา
& nbsp ;.
& nbsp; ...
& nbsp; ตกลง
& nbsp; ...
การใช้ฐานข้อมูลแม่แบบ
ถ้าคุณต้องการที่จะสร้างฐานข้อมูลเดียวกันหลายครั้งมันอาจจะเร็วขึ้นเพื่อให้ PostgreSQL คัดลอกฐานข้อมูลจากแม่แบบฐานข้อมูล คุณสามารถทำเช่นนี้โดยมีหนึ่ง DatabaseManager ทำหน้าที่เป็นแม่แบบสำหรับการอื่น:
& nbsp; >>> template_db = DatabaseManager (initialize_sql = init_db)
& nbsp; >>> ชั้น MyTest2 (MyTest):
& nbsp; ... ทรัพยากร = [('ฐาน', DatabaseManager (แม่แบบ = template_db))]
& nbsp; >>> runner.run (MyTest2 ()) # doctest: + จุดไข่ปลา
& nbsp ;.
& nbsp; ...
& nbsp; ตกลง
& nbsp; ...
บูรณาการการทำธุรกรรม
หากคำหลัก argumen dirty_on_commit เป็น True DatabaseManager จะทำฐานข้อมูลเป็นสกปรกทุกครั้งหลังจากประสบความสำเร็จกระทำทำผ่านโมดูลการทำธุรกรรม ซึ่งหมายความว่าการทดสอบซึ่ง dirties ฐานข้อมูลแต่ละไม่ต้องแจ้งให้ทราบด้วยตนเอง
& nbsp; >>> คน = DatabaseManager (dirty_on_commit = True)
ถ้าคุณใช้คุณลักษณะนี้คุณจำเป็นที่จะต้องขึ้นอยู่กับการทำธุรกรรม (http://pypi.python.org/pypi/transaction) แพคเกจด้วยตัวคุณเอง
การใช้ฐานข้อมูลที่มีอยู่
โดยค่าเริ่มต้น van.pg สร้างคลัสเตอร์ PostgreSQL ใหม่ในไดเรกทอรีชั่วคราวและเปิดตัวภูต PostgreSQL นี้ทำงานมากที่สุดของเวลา แต่ไม่ได้เป็นไปอย่างรวดเร็วมาก
หากคุณมีอยู่แล้วทำงานคลัสเตอร์ PostgreSQL คุณสามารถบอก van.pg ที่จะใช้มันโดยการตั้งค่าตัวแปรสภาพแวดล้อม VAN_PG_HOST ตัวอย่างเช่นในการเรียกใช้การทดสอบ van.pg กับเซิร์ฟเวอร์ PostgreSQL ท้องถิ่นที่มีมันเป็นซ็อกเก็ตใน / tmp / pgcluster ทำ:
VAN_PG_HOST = / tmp / pgcluster หลามทดสอบ setup.py
คำเตือน: ฐานข้อมูลใด ๆ เริ่มต้นด้วย test_db ในฐานข้อมูลเป้าหมายมีแนวโน้มที่จะลดลง
การเชื่อมต่อการปิด
โปรดใช้ความระมัดระวังที่จะต้องปิดการเชื่อมต่อกับฐานข้อมูลทั้งหมดเมื่อผ่านการทดสอบของคุณจะทำกับมัน PostgreSQL ไม่อนุญาตให้วางฐานข้อมูลในขณะที่มีการเชื่อมต่อเปิด ซึ่งจะทำให้เกิดข้อผิดพลาด van.pg เมื่อพยายามที่จะลดลงฐานข้อมูลการทดสอบ
Programatically การสร้างคลัสเตอร์
ในระดับที่ต่ำกว่าคุณยังสามารถโปรแกรมจัดการคลัสเตอร์ PostgreSQL ของคุณเอง
เริ่มต้นคลัสเตอร์:
& nbsp; >>> จาก van.pg นำเข้าคลัสเตอร์
& nbsp; >>> คลัสเตอร์ = คลัสเตอร์ ()
& nbsp; >>> cluster.initdb ()
ซึ่งจะสร้างฐานข้อมูลในไดเรกทอรีชั่วคราว:
& nbsp; >>> นำเข้าระบบปฏิบัติการ
& nbsp; >>> dbdir = cluster.dbdir
& nbsp; >>> 'PG_VERSION ใน os.listdir (dbdir)
& nbsp; ที่แท้จริง
เริ่มต้นมัน
& nbsp; >>> cluster.start ()
สร้าง / ทดสอบฐานข้อมูล:
& nbsp; >>> dbname = cluster.createdb ()
เราสามารถเชื่อมต่อกับฐานข้อมูล:
& nbsp; >>> นำเข้า psycopg2
& nbsp; >>> conn = psycopg2.connect (ฐานข้อมูล dbname = เจ้าภาพ = cluster.dbdir)
& nbsp; >>> CUR = conn.cursor ()
Twiddle ฐานข้อมูลเพื่อให้แน่ใจว่าเราสามารถทำพื้นฐาน:
& nbsp; >>> cur.execute ("CREATE TABLE x (Y int)")
& nbsp; >>> cur.execute ("แทรกค่า x (1)")
& nbsp; >>> conn.commit ()
& nbsp; >>> cur.execute ("SELECT * จาก x")
& nbsp; >>> cur.fetchall () [0] [0]
& nbsp; 1
หยุดภูตกลุ่ม:
& nbsp; >>> conn.close ()
& nbsp; >>> cluster.stop ()
เริ่มต้นอีกครั้ง:
& nbsp; >>> cluster.start ()
& nbsp; >>> conn = psycopg2.connect (ฐานข้อมูล dbname = เจ้าภาพ = cluster.dbdir)
& nbsp; >>> CUR = conn.cursor ()
& nbsp; >>> cur.execute ("SELECT * จาก x")
& nbsp; >>> cur.fetchall () [0] [0]
& nbsp; 1
และการทำความสะอาด:
& nbsp; >>> conn.close ()
& nbsp; >>> cluster.cleanup ()
& nbsp; >>> cluster.dbdir คือไม่มี
& nbsp; ที่แท้จริง
& nbsp; >>> os.path.exists (dbdir)
& nbsp; เท็จ
การพัฒนา
การพัฒนาที่เกิดขึ้นบน GitHub:
& nbsp; http: //github.com/jinty/van.pg

มีอะไรใหม่ ในข่าวประชาสัมพันธ์นี้:

  • การสนับสนุน Python 3.2.
  • Drop หลาม 2.5 สนับสนุน.
  • เพิ่ม tox.ini สำหรับการทดสอบกับรุ่นหลามหลาย.
  • Run PostgreSQL เป็นกระบวนการย่อยมากกว่าที่จะเป็นภูต (ผ่าน pg_ctl).
  • จัดระเบียบใหม่รหัสที่จะปรับปรุงการใช้ซ้ำและการคุ้มครองการทดสอบ.

ต้องการ

  • หลาม

ซอฟต์แวร์ที่คล้ายกัน

Pikzie
Pikzie

14 Apr 15

nosy
nosy

11 May 15

jstestnetlib
jstestnetlib

20 Feb 15

NoseDBResult
NoseDBResult

11 May 15

ซอฟแวร์อื่น ๆ ของนักพัฒนา Brian Sutherland

wesgi
wesgi

11 May 15

ความคิดเห็นที่ van.pg

ความคิดเห็นที่ไม่พบ
เพิ่มความคิดเห็น
เปิดภาพ!