26

Django サイトにはたくさんのコマンドがあります。管理用のものもあれば、テスト方法がわからない cron ジョブで実行されるものもあります。それらはほとんど次のようになります。

# Saved in file /app/management/commands/some_command.py
# Usage: python manage.py some_command
from django.core.management.base import NoArgsCommand
class Command(NoArgsCommand):
    def handle_noargs(self, **options):
         # Do something useful

そして、次のようないくつかのテストがあります。

import unittest
from django.test import TestCase
from django_webtest import WebTest

class SomeTest(WebTest):
    fixtures = ['testdata.json']

    def setUp(self):
        self.open_in_browser = False
        # Set up some objects

    def test_registration(self):
        response = self.client.get('/register/')
        self.assertEqual(response.status_code, 200)
        form = self.app.get('/register/').forms[1]
        # Set up the form
        response = form.submit()
        self.assertContains(response, 'You are Registered.')
        if self.open_in_browser:
            response.showbrowser()

        # Here I'd like to run some_command to see the how it affects my new user.

私のテスト (コメントがある場所) では、 NoArgsCommand を実行して、新しいユーザーに何が起こるかを確認したいと思います。これを達成する方法に関するドキュメントや例が見つかりません。また、私のテスト環境は、メモリにゼロから作成し、いくつかのフィクスチャとオブジェクトをロードしてテストを実行する SQLlite DB であることにも注意してください。コマンド ラインからコマンドを実行することはできません。時間がかかりすぎます。どんなアイデアでも大歓迎です。

4

1 に答える 1

62

管理コマンドに関する Django のドキュメントが役立つ場合があります。Python コードからそれらを呼び出す方法が説明されています。

基本的に、次のようなものが必要です。

from django.core import management
management.call_command( ... )
于 2012-03-02T19:51:29.277 に答える