Опираясь на ответ Нейта, у меня есть это:
def make_test_wrapper_for(command_module):
def _run_cmd_with(*args):
"""Run the possibly_add_alert command with the supplied arguments"""
cmd = command_module.Command()
(opts, args) = OptionParser(option_list=cmd.option_list).parse_args(list(args))
cmd.handle(*args, **vars(opts))
return _run_cmd_with
Использование:
from myapp.management import mycommand
cmd_runner = make_test_wrapper_for(mycommand)
cmd_runner("foo", "bar")
Преимущество здесь в том, что если вы использовали дополнительные опции и OptParse, это поможет вам. Он не совсем совершенен - и пока не передает результаты - но будет использовать тестовую базу данных. Затем вы можете проверить эффекты базы данных.
Я уверен, что использование макетного модуля Micheal Foords, а также переподключение стандартного вывода на время теста означало бы, что вы также можете получить больше от этой техники - проверить выход, условия выхода и т. Д.