سؤال

صنعت أوامر DJango-admin

ولكن، لا أعرف كيفية اختباره اختبارات django القياسية

هل كانت مفيدة؟

المحلول

إذا كنت تستخدم بعض الأداة التغطية، فسيكون من الجيد الاتصال به من التعليمات البرمجية مع:

from django.core.management import call_command
from django.test import TestCase

class CommandsTestCase(TestCase):
    def test_mycommand(self):
        " Test my custom command."

        args = []
        opts = {}
        call_command('mycommand', *args, **opts)

        # Some Asserts.

نصائح أخرى

يجب عليك إجراء البرنامج النصي الخاص بك الفعلي الحد الأدنى ممكنا، بحيث يستدعي فقط وظيفة في مكان آخر. يمكن بعد ذلك اختبار الوظيفة عبر اختبارات الوحدات أو المستندات بشكل طبيعي.

يمكنك أن ترى في مثال github.comانظر هنا

def test_command_style(self):
    out = StringIO()
    management.call_command('dance', style='Jive', stdout=out)
    self.assertEquals(out.getvalue(),
        "I don't feel like dancing Jive.")

بديل بسيط ل تحليل stdout. هو إجراء إخراج الأمر الإداري الخاص بك مع رمز الخطأ إذا لم يتم تشغيله بنجاح، على سبيل المثال باستخدام sys.exit (1).

يمكنك التقاط هذا في اختبار مع:

    with self.assertRaises(SystemExit):
        call_command('mycommand')

وأنا أتفق مع Daniel أن البرنامج النصي الفعلي يجب أن يفعل البرنامج الأدنى ممكنا ولكن يمكنك أيضا اختباره مباشرة في اختبار وحدة Django باستخدام os.popen4.

من داخل اختبار وحدتك، يمكنك الحصول على أمر مثل

fin, fout = os.popen4('python manage.py yourcommand')
result = fout.read()

يمكنك بعد ذلك تحليل محتويات النتيجة لاختبار ما إذا كان الأمر Django ناجحا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top