web-dev-qa-db-ja.com

カスタムDjango-adminコマンドをテストする方法

私が作成した カスタムDjango-adminコマンド

しかし、私はそれをテストする方法がわかりません 標準Djangoテスト

49
dixon

カバレッジツールを使用している場合は、次のコードから呼び出すとよいでしょう。

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.
92

実際のコマンドスクリプトを可能な限り最小限に抑えて、他の場所で関数を呼び出すだけにする必要があります。その後、関数は通常どおり単体テストまたはdoctestを介してテストできます。

20
Daniel Roseman

github.comの例で見ることができます ここを参照

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.")
12
madjardi

stdoutの解析 の簡単な代替方法は、たとえばsys.exit(1)を使用して、正常に実行されない場合にエラーコードで管理コマンドを終了させることです。

これは、次のテストで確認できます。

    with self.assertRaises(SystemExit):
        call_command('mycommand')
0
Bosco