2010-02-24 3 views

Répondre

23

Malheureusement, il n'existe aucune commande de ce type. Django n'a aucun moyen de dire quelles applications sont «les vôtres» par rapport à celles de quelqu'un d'autre.

Ce que je suggère est d'écrire une nouvelle commande de gestion, appelez-la mytest. Puis créez un nouveau paramètre MY_INSTALLED_APPS. La commande mytest exécutera simplement le test pour chaque application dans MY_INSTALLED_APPS. Vous voulez que la commande mytest sous-classe django.core.management.base.AppCommand. django.core.management.call_command sera également utile.

Le seul problème avec cette méthode est que vous devrez constamment maintenir le paramètre MY_INSTALLED_APPS pour vous assurer qu'il est correct.

+11

cette solution peut être réalisée en combinant DRY MY_INSTALLED_APPS avec INSTALLED_APPS dans 'settings.py'. Ensuite, il suffit de décider si vous voulez que l'application soit exécutée avec mytest ou non lorsque vous l'ajoutez aux paramètres. –

+0

Brandon, bonne idée. Merci! – Apreche

1

Cela fonctionne mieux dans Django 1.6+: lorsque vous exécutez python manage.py test, seulement vos tests fonctionneront (en supposant que vous avez les paramètres par défaut pour TEST_RUNNER)

2

Vous pouvez créer une gestion/commandes /testmyapps.py pour une de votre application qui a:

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) 
Questions connexes