如何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命令是否成功。