2010-02-24 44 views
20

现在,如果我想从我的所有的应用程序运行测试,我去:如何仅对我所有的Django应用程序运行测试?

python manage.py test app1 app2 app3 

如果我运行:

python manage.py test 

INSTALLED_APPS所有应用程序的测试均运行,包括Django的那些。是否有简单的命令来运行我创建的所有应用程序的测试?

回答

23

可悲的是,没有这样的命令。 Django无法告诉哪些应用程序是你的,哪些是别人的。

我会建议写一个新的管理命令,称之为mytest。然后创建一个新的设置MY_INSTALLED_APPS。 mytest命令将仅运行MY_INSTALLED_APPS中每个应用程序的测试。你会希望mytest命令继承django.core.management.base.AppCommand。 django.core.management.call_command也会有所帮助。

这种方法唯一的问题是,你将不得不经常保持MY_INSTALLED_APPS设置,以确保它是正确的。

+11

此解决方案可以通过在settings.py中将MY_INSTALLED_APPS与INSTALLED_APPS结合使用DRY。然后,只有当您将应用程序添加到设置时,您是否希望使用mytest运行应用程序才是决定性的问题。 – 2010-02-24 20:55:43

+0

布兰登,好主意。谢谢! – Apreche 2010-03-02 15:44:18

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) 
相关问题