如何testing自定义的django-admin命令

我创build了自定义的django-admin命令

但是,我不知道如何在标准的djangotesting中testing它

如果您正在使用某个覆盖率工具,则可以使用以下代码来调用代码:

from django.core.management import call_command from django.test import TestCase class CommandsTestCase(TestCase): def test_mycommand(self): " Test my custom command." args = [] opts = {} call_command('mycommand', *args, **opts) # Some Asserts. 

你应该使你的实际命令脚本尽可能的小,这样它就可以在其他地方调用一个函数。 该function可以通过unit testing或doctesttesting正常。

你可以在github.com 看到这里的例子

 def test_command_style(self): out = StringIO() management.call_command('dance', style='Jive', stdout=out) self.assertEquals(out.getvalue(), "I don't feel like dancing Jive.") 

我同意Daniel的观点,实际的命令脚本应该尽可能的小,但是你也可以直接在Djangounit testing中使用os.popen4来testing它。

从你的unit testing中你可以有一个类似的命令

 fin, fout = os.popen4('python manage.py yourcommand') result = fout.read() 

然后您可以分析结果的内容来testing您的Django命令是否成功。