现在,如果我想从我的所有的应用程序运行测试,我去:如何仅对我所有的Django应用程序运行测试?
python manage.py test app1 app2 app3
如果我运行:
python manage.py test
在INSTALLED_APPS
所有应用程序的测试均运行,包括Django的那些。是否有简单的命令来运行我创建的所有应用程序的测试?
现在,如果我想从我的所有的应用程序运行测试,我去:如何仅对我所有的Django应用程序运行测试?
python manage.py test app1 app2 app3
如果我运行:
python manage.py test
在INSTALLED_APPS
所有应用程序的测试均运行,包括Django的那些。是否有简单的命令来运行我创建的所有应用程序的测试?
可悲的是,没有这样的命令。 Django无法告诉哪些应用程序是你的,哪些是别人的。
我会建议写一个新的管理命令,称之为mytest。然后创建一个新的设置MY_INSTALLED_APPS。 mytest命令将仅运行MY_INSTALLED_APPS中每个应用程序的测试。你会希望mytest命令继承django.core.management.base.AppCommand。 django.core.management.call_command也会有所帮助。
这种方法唯一的问题是,你将不得不经常保持MY_INSTALLED_APPS设置,以确保它是正确的。
使用鼻子django测试亚军,它照顾这一点。
此作品在Django 1.6+更好:当您运行python manage.py test,
只有你的测试运行(假设你有TEST_RUNNER默认设置)
您可以创建一个管理/命令/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)
此解决方案可以通过在settings.py中将MY_INSTALLED_APPS与INSTALLED_APPS结合使用DRY。然后,只有当您将应用程序添加到设置时,您是否希望使用mytest运行应用程序才是决定性的问题。 – 2010-02-24 20:55:43
布兰登,好主意。谢谢! – Apreche 2010-03-02 15:44:18