Sobre la base de la respuesta de Nate, tengo esto:
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
Uso:
from myapp.management import mycommand
cmd_runner = make_test_wrapper_for(mycommand)
cmd_runner("foo", "bar")
La ventaja aquí es que si ha utilizado opciones adicionales y OptParse, esto lo resolverá por usted. No es del todo perfecto, y aún no canaliza los resultados, pero usará la base de datos de prueba. A continuación, puede probar los efectos de la base de datos.
Estoy seguro de que el uso del módulo simulado de Micheal Foords y también el recableado de la salida estándar durante la duración de una prueba significaría que también podría sacar más provecho de esta técnica: probar la salida, las condiciones de salida, etc.