Pytest-django: --reuse-db و - إنشاء- db لا يعملان معًا

تم إنشاؤها على ٢٧ أكتوبر ٢٠١٦  ·  5تعليقات  ·  مصدر: pytest-dev/pytest-django

لقد لاحظت المشكلة أدناه عند استخدام سير العمل المقدم هنا: https://pytest-django.readthedocs.io/en/latest/database.html#example -work-flow-with-reuse-db-and-create-db. يبدو أن السلوك تغير في إصدار حديث على الرغم من أنه من الممكن أنني لم ألاحظ حدوث ذلك مطلقًا.

عندما أقوم بإجراء الاختبارات التي اجتازت العلامة --create-db ، يتم إعادة إنشاء قاعدة البيانات وتشغيل عمليات الترحيل (لاحظ الوقت). ومع ذلك ، تم إسقاط قاعدة البيانات على الرغم من تمرير العلم --reuse-db عبر addopts .

$ pytest tests/app --create-db
...............................................................................................................................
127 passed in 8.23 seconds

عندما أقوم بتشغيل الاختبارات بعد ذلك بدون العلامة --create-db ، يتم إعادة إنشاء قاعدة البيانات مرة أخرى ويتم تشغيل عمليات الترحيل لأنه تم إسقاطها مسبقًا.

$ pytest tests/app
...............................................................................................................................
127 passed in 7.01 seconds

إذا أجريت الاختبارات للمرة الثالثة تمامًا كما هو مذكور أعلاه ، فسيتم إعادة استخدام قاعدة البيانات بشكل صحيح:

$ pytest tests/app
...............................................................................................................................
127 passed in 1.12 seconds

التعليق الأكثر فائدة

لقد ألقيت نظرة على الكود ويمكنني أن أرى تغييرًا منطقيًا طفيفًا في مُعاد بناء حديث (# 362) يتسبب في ذلك.

كان المنطق في django_db_setup هو:

if not request.config.getvalue('reuse_db'):
        request.addfinalizer(teardown_database)

الآن هو:

if not django_db_keepdb:
        request.addfinalizer(teardown_database)

حيث تكون تركيبات django_db_keepdb request.config.getvalue('reuse_db') and not request.config.getvalue('create_db') .

إنها ليست صفقة ضخمة ولكنها تجعل المستندات هنا غير صحيحة ولكنها مضللة بعض الشيء حيث تم إنشاء قاعدة البيانات مرتين.

ال 5 كومينتر

لقد ألقيت نظرة على الكود ويمكنني أن أرى تغييرًا منطقيًا طفيفًا في مُعاد بناء حديث (# 362) يتسبب في ذلك.

كان المنطق في django_db_setup هو:

if not request.config.getvalue('reuse_db'):
        request.addfinalizer(teardown_database)

الآن هو:

if not django_db_keepdb:
        request.addfinalizer(teardown_database)

حيث تكون تركيبات django_db_keepdb request.config.getvalue('reuse_db') and not request.config.getvalue('create_db') .

إنها ليست صفقة ضخمة ولكنها تجعل المستندات هنا غير صحيحة ولكنها مضللة بعض الشيء حيث تم إنشاء قاعدة البيانات مرتين.

شكرا لتعقبه! يجب أن نصلح هذا ونعيد السلوك القديم بالتأكيد.

pelme هل يمكنك دمج طلب السحب من dekkers ؟ يبدو أنه يصلح هذه المشكلة.

آسف ، هذا ليس طلب سحب. الإصلاح لا يزال يبدو أنه صالح.

العلاقات العامة هنا: https://github.com/pytest-dev/pytest-django/pull/476

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات