如何测试自定义Django的管理命令
-
18-09-2019 - |
题
不过,我不知道如何在标准的Django测试测试一>
解决方案
如果你使用的是覆盖工具这将是很好,从代码调用它:
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.
其他提示
您应该让您的实际命令脚本最小的可能,所以,它只是调用一个函数在其他地方。该函数然后可以经由单元测试或文档测试正常测试。
可以在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.")
一个简单的替代解析标准输出是使一个错误代码的管理命令的退出,如果它不使用sys.exit(1)成功运行,例如
可以在与测试捕获此:
with self.assertRaises(SystemExit):
call_command('mycommand')
我与丹尼尔认为,实际的命令脚本应该做尽可能小的,但你也可以直接在Django的单元测试使用os.popen4
测试。
从您的单元测试中可以有一个像
的命令fin, fout = os.popen4('python manage.py yourcommand')
result = fout.read()
您可以分析结果的内容,以测试你的Django命令是否成功。
不隶属于 StackOverflow