質問

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

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

役に立ちましたか?

解決

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

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.

他のヒント

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

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

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

これをテストでキャッチできます。

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

ダニエルに、実際のコマンドスクリプトは可能な限り最小限に抑える必要があることに同意しますが、Djangoユニットテストで直接テストすることもできます。 os.popen4.

ユニットテスト内から、次のようなコマンドを持つことができます

fin, fout = os.popen4('python manage.py yourcommand')
result = fout.read()

その後、結果の内容を分析して、Djangoコマンドが成功したかどうかをテストできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top