Спираючись на відповідь Нейт, я маю це:
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, а також повторне з'єднання прокладки протягом тривалості тесту означало б, що ви також можете вийти ще з цієї техніки - протестуйте вихід, умови виходу тощо.