كيفية اختبار أوامر إدارة DJango-Admin
-
18-09-2019 - |
سؤال
صنعت أوامر 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 ناجحا.