En me basant sur la réponse de Nate, j'ai ceci :
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
Utilisation :
from myapp.management import mycommand
cmd_runner = make_test_wrapper_for(mycommand)
cmd_runner("foo", "bar")
L'avantage ici est que si vous avez utilisé des options supplémentaires et OptParse, cela va régler le problème pour vous. Ce n'est pas tout à fait parfait - et il ne pipe pas encore les sorties - mais il utilisera la base de données de test. Vous pouvez alors tester les effets de la base de données.
Je suis sûr que l'utilisation du module fantaisie de Michael Foord et le recâblage de la sortie de données pendant la durée d'un test vous permettraient de tirer davantage parti de cette technique - tester la sortie, les conditions de sortie, etc.