如何仅为我的所有Django应用程序运行测试?

时间:2010-02-24 19:54:17

标签: django

现在,如果我想从我的所有应用程序运行测试,我会去:

python manage.py test app1 app2 app3

如果我跑:

python manage.py test

运行INSTALLED_APPS中所有应用的测试,包括django。是否有一个简单的命令来运行我创建的所有应用程序的测试?

4 个答案:

答案 0 :(得分:24)

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

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

此方法的唯一问题是您必须不断维护MY_INSTALLED_APPS设置以确保其正确。

答案 1 :(得分:2)

这在Django 1.6+中运行得更好:当你运行python manage.py test,时,只运行你的测试(假设你有TEST_RUNNER的默认设置)

答案 2 :(得分: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)

答案 3 :(得分:0)

使用nose django测试跑步者,它会照顾这个。

参考: Django nose to run only project tests