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.
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.")
6条答案
按热度按时间ilmyapht1#
如果你正在使用一些覆盖工具,最好从代码中调用它:
从官方文件来看
管理命令可以用call_command()函数测试,输出可以重定向到StringIO示例
qhhrdooz2#
你应该尽可能地减少你的命令脚本,这样它就可以调用其他地方的函数,然后这个函数就可以通过单元测试或者文档测试来测试了。
91zkwejq3#
您可以在www.example.com中查看github.com示例see here
oxalkeyp4#
添加到这里已经发布的内容中。如果你的django-admin命令传递了一个文件作为参数,你可以这样做:
当你的django-command以这样的方式使用时,这是有效的:
nzrxty8p5#
解析stdout的一个简单的替代方法是,如果管理命令运行不成功,让它退出时显示一个错误代码,例如使用sys.exit(1)。
您可以在以下测试中捕获此问题:
p4rjhz4m6#
我同意丹尼尔的观点,实际的命令脚本应该尽可能少地执行,但是您也可以使用
os.popen4
在Django单元测试中直接测试它。在单元测试中,您可以使用如下命令
然后你可以分析result的内容来测试Django命令是否成功。