2010-02-24 11 views
20

अभी, अगर मैं अपने सभी ऐप्स के परीक्षण चलाने के लिए चाहता हूँ, मुझे जाना:मैं अपने सभी Django ऐप्स के लिए केवल परीक्षण कैसे चला सकता हूं?

python manage.py test app1 app2 app3 

अगर मैं चलाएँ:

python manage.py test 

INSTALLED_APPS के सभी एप्लिकेशन की कसौटी पर चलाए जा रहे हैं, Django सहित लोगों को। क्या मेरे द्वारा बनाए गए सभी ऐप्स के परीक्षण चलाने के लिए कोई आसान आदेश है?

उत्तर

23

अफसोस की बात है कि ऐसा कोई आदेश नहीं है। Django के पास यह कहने का कोई तरीका नहीं है कि कौन से ऐप्स "आपका" बनाम हैं जो किसी और के हैं।

मैं जो सुझाव दूंगा वह एक नया प्रबंधन कमांड लिख रहा है, इसे सबसे पहले कॉल करें। फिर MY_INSTALLED_APPS की एक नई सेटिंग बनाएं। Mytest कमांड केवल MY_INSTALLED_APPS में प्रत्येक ऐप के लिए परीक्षण चलाएगा। आप mjango.core.management.base.AppCommand subclass करने के लिए mytest कमांड चाहते हैं। django.core.management.call_command भी सहायक होगा।

इस विधि के साथ एकमात्र समस्या यह है कि आपको यह सुनिश्चित करने के लिए कि यह सही है, आपको लगातार MY_INSTALLED_APPS सेटिंग को बनाए रखना होगा।

+11

इस समाधान 'settings.py' में INSTALLED_APPS साथ MY_INSTALLED_APPS संयोजन से सूखी बनाया जा सकता है। फिर यह केवल यह तय करने का मामला है कि क्या आप ऐप को 'mytest' के साथ चलाने के लिए चाहते हैं या नहीं जब आप इसे सेटिंग्स में जोड़ते हैं। –

+0

ब्रैंडन, अच्छा विचार। धन्यवाद! – Apreche

1

यह Django में 1.6+ बेहतर काम करता है: जब आप चलाने python manage.py test, केवल अपने परीक्षण चलाता है (यह मानते हुए आप TEST_RUNNER के लिए डिफ़ॉल्ट सेटिंग्स है)

2

आप एक प्रबंधन/आदेशों बना सकते हैं है, जो आपके ऐप्लिकेशन में से एक के लिए /testmyapps.py:

from django.core.management.base import BaseCommand, CommandError 
import django.core.management.commands.test 
from django.core import management 
from django.conf import settings 

class Command(django.core.management.commands.test.Command): 
    args = '' 
    help = 'Test all of MY_INSTALLED_APPS' 

    def handle(self, *args, **options): 
     super(Command, self).handle(*(settings.MY_INSTALLED_APPS + args), **options) 
संबंधित मुद्दे

 संबंधित मुद्दे