van.pg

צילום מסך תוכנה:
van.pg
פרטי תוכנה:
גרסה: 2.0
טען תאריך: 14 Apr 15
מפתחים: Brian Sutherland
רשיון: ללא תשלום
פופולריות: 5

Rating: nan/5 (Total Votes: 0)

van.pg הוא מודול פייתון המספק יצירה קלה של מסדי נתונים PostgreSQL (ואשכולות) לבדיקת יחידה.
מאגרי Dirty
מסדי נתונים מבחן לוקחים זמן רב כדי ליצור. באופן כללי אתה צריך להיות קצת זהיר כאשר אתה מחליט למחוק / לשחזר מתקן מסד הנתונים של בדיקה.
כמו כן, נראה שיש שום אופן חזק בPostgreSQL של ​​להבין אם מסד הנתונים היה מחויב לאו לא.
אז יש van.pg אין ברירה אלא להפקיד את האחריות עליך להודיע ​​את זה כאשר מסד הנתונים הוא מלוכלך. אם זה לא נעשה כראוי, בידוד מבחן יהיה בסכנה. זה לא אידיאלי, אבל הכי טוב שאנחנו יכולים לעשות.
חריג היחיד הוא אם אתה באופן עקבי להשתמש בחבילת העסקה (http://pypi.python.org/pypi/transaction) לנהל את מסד הנתונים מבצעים. במקרה זה אתה יכול לבקש משאב שלכלך בכל פעם שעסקה בוצעה.
שילוב עם testresources
הדרך האופיינית לשימוש גופי אלה היא באמצעות testresources (http://pypi.python.org/pypi/testresources/):
& Nbsp; >>> מtestresources לייבא ResourcedTestCase
& Nbsp; >>> מDatabaseManager יבוא van.pg
& Nbsp; >>> psycopg2 יבוא
& Nbsp; >>> def init_db (db):
& Nbsp; ... conn = psycopg2.connect (מארח = db.host, מסד נתונים = db.database)
& Nbsp; ... נוכ = conn.cursor ()
& Nbsp; ... cur.execute ("ליצור foo TABLE (מספר שלם בר);")
& Nbsp; ... conn.commit ()
& Nbsp; ... conn.close ()
& Nbsp; >>> כיתת MyTest (ResourcedTestCase):
& Nbsp; ...
& Nbsp; ... משאבים = [('db', DatabaseManager (initialize_sql = init_db))]
& Nbsp; ...
& Nbsp; ... def runTest (עצמי):
& Nbsp; ... conn = psycopg2.connect (מארח = self.db.host, מסד נתונים = self.db.database)
& Nbsp; ... נוכ = conn.cursor ()
& Nbsp; ... cur.execute ("INSERT INTO ערכי foo (1);")
& Nbsp; ... conn.commit ()
& Nbsp; ... נוכ = conn.cursor ()
& Nbsp; ... cur.execute ("SELECT * FROM foo")
& Nbsp; ... self.assertEquals (cur.fetchall (), [(1,)])
& Nbsp; ... # הערה: חייב לסגור חיבורים או להפיל מסדי נתונים נכשל
& Nbsp; ... conn.close ()
& Nbsp; # () ... self.db.dirtied שינינו את DB, כך שהוא צריך מחדש טעינה
למעשה להפעיל את הבדיקה:
& Nbsp; >>> מTextTestRunner יבוא unittest
& Nbsp; >>> sys יבוא
& Nbsp; >>> רץ = TextTestRunner (זרם = sys.stdout)
& Nbsp; >>> runner.run doctest # (MyTest ()): + שלוש נקודות
& Nbsp ;.
& Nbsp; ...
& Nbsp; אישור
& Nbsp; ...
מסדי נתונים תבנית שימוש ב
אם אתה צריך לשחזר אותה פעמים רבות באתר, זה יכול להיות מהיר יותר לתת PostgreSQL להעתיק את בסיס הנתונים מבסיס נתוני תבנית. אתה יכול לעשות זאת על ידי שיש אחד DatabaseManager לשמש כתבנית לעוד:
& Nbsp; >>> template_db = DatabaseManager (initialize_sql = init_db)
& Nbsp; >>> MyTest2 כיתה (MyTest):
& Nbsp; ... משאבים = [('db', DatabaseManager (תבנית = template_db))]
& Nbsp; >>> runner.run doctest # (MyTest2 ()): + שלוש נקודות
& Nbsp ;.
& Nbsp; ...
& Nbsp; אישור
& Nbsp; ...
אינטגרציה עסקה
אם מילת המפתח argumen dirty_on_commit הוא אמיתית, DatabaseManager יציין את מסד הנתונים כלכלך אחרי כל מוצלח תוך התחייבות שנעשה באמצעות מודול העסקה. משמעות הדבר היא שכל בדיקה מלכלכת את מסד הנתונים אינו חייב להודיע ​​את זה באופן ידני.
& Nbsp; >>> גבר = DatabaseManager (dirty_on_commit = True)
אם אתה משתמש בתכונה זו, אתה צריך להיות תלוי בעסקה (http://pypi.python.org/pypi/transaction) חבילה עצמך.
שימוש בבסיס נתונים קיימים
כברירת מחדל, van.pg יוצר אשכול PostgreSQL חדש בספרייה זמנית ומשיק daemon PostgreSQL. זה עובד רוב הזמן, אבל הוא לא מאוד מהיר.
אם יש לך אשכול PostgreSQL כבר פועל, אתה יכול להגיד לי van.pg להשתמש בו על ידי הגדרת הסביבה VAN_PG_HOST משתנה. לדוגמה, כדי להריץ בדיקות של van.pg נגד שרת PostgreSQL מקומי עם זה שקעים ב/ tmp / pgcluster לעשות:
מבחן setup.py = / tmp / פיתון pgcluster VAN_PG_HOST
אזהרה: כל מאגרי מידע מתחילים עם test_db באתר היעד עשויה להיות ירד.
חיבורים סגירה
להיות זהיר כדי לסגור את כל החיבורים כראוי למסד הנתונים פעם אחת הבדיקה שלך לעשות עם זה. PostgreSQL אינו מאפשר הטלת מסדי נתונים בזמן שיש חיבורים פתוחים. זה יגרום van.pg שגיאה כאשר מנסים לרדת מסד הנתונים של הבדיקה.
ידי תוכניות יצירת אשכול
ברמה נמוכה יותר, אתה יכול גם תיכנותי לתפעל אשכול PostgreSQL שלך.
לאתחל את האשכול:
& Nbsp; >>> מאשכול יבוא van.pg
& Nbsp; >>> אשכול = Cluster ()
& Nbsp; >>> cluster.initdb ()
אשר יוצר מסד נתונים בספרייה זמנית:
& Nbsp; >>> os יבוא
& 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; >>> נוכ = conn.cursor ()
לסובב את מסד הנתונים כדי לוודא שאנחנו יכולים לעשות את היסודות:
& Nbsp; >>> cur.execute ("ליצור x לוח (int y)")
& Nbsp; >>> cur.execute ("INSERT INTO ערכי X (1)")
& Nbsp; >>> conn.commit ()
& Nbsp; >>> cur.execute ("SELECT * מx")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
לעצור את daemon האשכול:
& Nbsp; >>> conn.close ()
& Nbsp; >>> cluster.stop ()
להתחיל אותו שוב:
& Nbsp; >>> cluster.start ()
& Nbsp; >>> conn = psycopg2.connect (מסד נתונים = dbname, מארח = cluster.dbdir)
& Nbsp; >>> נוכ = 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; False
פיתוח
פיתוח מתבצע על GitHub:
& Nbsp; http: //github.com/jinty/van.pg

מה חדש בהודעה זו : תמיכה

  • Python 3.2.

  • תמיכה בגלילה Python 2.5.
  • הוסף tox.ini לבדיקה נגד גרסאות פיתון מרובות.
  • הפעלת PostgreSQL כsubprocess ולא כשד (דרך pg_ctl).
  • לארגן מחדש את קוד כדי לשפר את שימוש חוזר וכיסוי בדיקות.

דרישות :

  • Python

תוכנה דומה

ESC/Java2
ESC/Java2

3 Jun 15

json-document
json-document

14 Apr 15

Schema Crawler
Schema Crawler

3 Jun 15

lava-test-demo
lava-test-demo

15 Apr 15

תוכנות אחרות של יזם Brian Sutherland

wesgi
wesgi

11 May 15

תגובות ל van.pg

תגובות לא נמצא
להוסיף הערה
הפעל את התמונות!