van.pg

البرمجيات قطة:
van.pg
تفاصيل البرنامج:
الإصدار: 2.0
تاريخ إيداع: 14 Apr 15
المطور: Brian Sutherland
ترخيص: حرر
شعبية: 66

Rating: 5.0/5 (Total Votes: 1)

وvan.pg هو وحدة بيثون أن يوفر خلق سهلة من قواعد البيانات كيو (ومجموعات) لاختبار وحدة.
قواعد البيانات القذرة
قواعد بيانات الاختبار يستغرق وقتا طويلا لخلق. بشكل عام عليك أن تكون حذرا قليلا عندما تقرر حذف / إعادة لاعبا اساسيا قاعدة بيانات الاختبار.
أيضا، يبدو أن هناك أي وسيلة قوية في كيو من معرفة إذا كان ارتكب قاعدة بيانات لأم لا.
حتى 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؛ >>> init_db مواطنه (ديسيبل):
على & nbsp؛ ... كون = psycopg2.connect (المضيف = db.host، قاعدة بيانات = db.database)
على & nbsp؛ ... لئيم = conn.cursor ()
على & nbsp؛ ... cur.execute ("CREATE TABLE فو (بار عدد صحيح)؛")
على & nbsp؛ ... conn.commit ()
على & nbsp؛ ... conn.close ()
على & nbsp؛ >>> الطبقة MyTest (ResourcedTestCase):
على & nbsp؛ ...
على & nbsp؛ ... الموارد = [('DB'، DatabaseManager (initialize_sql = init_db))]
على & nbsp؛ ...
على & nbsp؛ ... مواطنه runTest (النفس):
على & nbsp؛ ... كون = psycopg2.connect (المضيف = self.db.host، قاعدة بيانات = self.db.database)
على & nbsp؛ ... لئيم = conn.cursor ()
على & nbsp؛ ... cur.execute ("تضاف إلى القيم فو (1)؛")
على & nbsp؛ ... conn.commit ()
على & nbsp؛ ... لئيم = conn.cursor ()
على & nbsp؛ ... cur.execute ("SELECT * FROM فو")
على & nbsp؛ ... self.assertEquals (cur.fetchall ()، [(1)])
على & nbsp؛ ... # ملاحظة: يجب إغلاق اتصالات أو إسقاط قواعد البيانات فشل
على & nbsp؛ ... conn.close ()
على & nbsp؛ ... self.db.dirtied () # قمنا بتغيير DB، لذلك يحتاج إعادة التحميل
تشغيل فعلا الاختبار:
على & nbsp؛ >>> من unittest TextTestRunner استيراد
على & nbsp؛ >>> SYS استيراد
على & nbsp؛ >>> عداء = TextTestRunner (تيار = sys.stdout)
على & nbsp؛ >>> runner.run (MyTest ()) # doctest: + القطع
ونبسب؛.
على & nbsp؛ ...
على & nbsp؛ OK
على & nbsp؛ ...
استخدام قواعد بيانات القالب
إذا كنت بحاجة إلى إعادة إنشاء قاعدة بيانات نفسها مرات عديدة، يمكن أن يكون أسرع للسماح كيو نسخ قاعدة البيانات من قاعدة بيانات القالب. يمكنك القيام بذلك عن طريق وجود واحد DatabaseManager بمثابة نموذج لآخر:
على & nbsp؛ >>> template_db = DatabaseManager (initialize_sql = init_db)
على & nbsp؛ >>> الطبقة MyTest2 (MyTest):
على & nbsp؛ ... الموارد = [('DB'، DatabaseManager (قالب = template_db))]
على & nbsp؛ >>> runner.run (MyTest2 ()) # doctest: + القطع
ونبسب؛.
على & nbsp؛ ...
على & nbsp؛ OK
على & nbsp؛ ...
التكامل المعاملات
إذا كانت الكلمة الرئيسية argumen dirty_on_commit صحيح، وسوف DatabaseManager علامة قاعدة البيانات كما موسخ بعد كل النجاح كرست التي تتم من خلال وحدة المعاملة. وهذا يعني كل اختبار الترابية قاعدة البيانات لا يجب أن يخطر بذلك يدويا.
على & nbsp؛ >>> رجل = DatabaseManager (dirty_on_commit = صحيح)
إذا كنت تستخدم هذه الميزة، تحتاج إلى الاعتماد على الصفقة (http://pypi.python.org/pypi/transaction) حزمة نفسك.
باستخدام قاعدة بيانات موجودة
افتراضيا، van.pg يخلق مجموعة كيو جديدة في دليل مؤقت، ويطلق الخفي كيو. هذا وتعمل معظم الوقت، ولكن ليس سريع جدا.
إذا كان لديك كتلة كيو قيد التشغيل بالفعل، يمكنك أن تقول van.pg لاستخدامه عن طريق تعيين متغير البيئة VAN_PG_HOST. على سبيل المثال، لتشغيل الاختبارات van.pg ضد الخادم كيو المحلي مع انها مآخذ في / تمة / pgcluster القيام به:
VAN_PG_HOST = / تمة / pgcluster الثعبان اختبار setup.py
تحذير: أي قواعد البيانات التي تبدأ ب test_db في قاعدة البيانات الهدف من المحتمل أن يكون إسقاط.
اتصالات إغلاق
كن حذرا لإغلاق كافة الاتصالات بشكل صحيح إلى قاعدة البيانات مرة واحدة ويتم الاختبار معها. كيو لا يسمح إسقاط قواعد البيانات في حين أن هناك اتصالات مفتوحة. وهذا سوف يسبب van.pg للخطأ عند محاولة إسقاط قاعدة بيانات الاختبار.
خلق برمجيا مجموعة
على مستوى أدنى، يمكنك أيضا برمجيا التعامل مع مجموعة كيو الخاصة بك.
تهيئة العنقودية:
على & 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؛ >>> كون = psycopg2.connect (قاعدة بيانات = DBNAME، المضيف = cluster.dbdir)
على & nbsp؛ >>> لئيم = conn.cursor ()
عبث قاعدة البيانات للتأكد من أننا يمكن أن تفعل الأساسيات:
على & nbsp؛ >>> cur.execute ("CREATE TABLE العاشر (ذ كثافة العمليات)")
على & nbsp؛ >>> cur.execute ("INSERT INTO س VALUES (1)")
على & nbsp؛ >>> conn.commit ()
على & nbsp؛ >>> cur.execute ("SELECT * من س")
على & nbsp؛ >>> cur.fetchall () [0] [0]
على & nbsp؛ 1
وقف الخفي نظام المجموعة:
على & nbsp؛ >>> conn.close ()
على & nbsp؛ >>> cluster.stop ()
تشغيله مرة أخرى:
على & nbsp؛ >>> cluster.start ()
على & nbsp؛ >>> كون = psycopg2.connect (قاعدة بيانات = DBNAME، المضيف = cluster.dbdir)
على & nbsp؛ >>> لئيم = conn.cursor ()
على & nbsp؛ >>> cur.execute ("SELECT * من س")
على & nbsp؛ >>> cur.fetchall () [0] [0]
على & nbsp؛ 1
وتنظيف:
على & nbsp؛ >>> conn.close ()
على & nbsp؛ >>> cluster.cleanup ()
على & nbsp؛ >>> cluster.dbdir لا شيء
على & nbsp؛ صحيح
على & nbsp؛ >>> os.path.exists (dbdir)
على & nbsp؛ خطأ
تنمية
يأخذ تنمية مكان على جيثب:
على & nbsp؛ المتشعب: //github.com/jinty/van.pg

ما هو الجديد في هذا الإصدار:

الدعم بيثون 3.2.
انخفاض بيثون 2.5 الدعم.
إضافة tox.ini للاختبار ضد الإصدارات الثعبان متعددة.
تشغيل كيو ك subprocess بدلا من أن يكون البرنامج الخفي (عبر pg_ctl).
إعادة تنظيم كود لتحسين إعادة الاستخدام وتغطية الاختبار.

المتطلبات:

بيثون

برامج مماثلة

pytest-incremental
pytest-incremental

12 May 15

lava-ci
lava-ci

11 May 15

Bisect
Bisect

20 Feb 15

snort
snort

14 Apr 15

البرامج الأخرى من المطور Brian Sutherland

wesgi
wesgi

11 May 15

تعليقات ل van.pg

لم يتم العثور على التعليقات
إضافة تعليق
بدوره على الصور!