0

私はジャンゴの初心者です。最初の django アプリで、ビューの 1 つをテストしてログインを確認しています。これが私の見解です:

from testprjct.testapp.forms import LoginForm_form
from django.contrib import auth

def check_login(request):

if request.method == 'POST':
    form = LoginForm_form(request.POST)
    if request.POST and form.is_valid():
        username = request.POST.get('username', '')
        password = request.POST.get('password', '')

        # I am hard-coding the credentials here just for testing
        user = auth.authenticate(username = 'test123', password = 'qwerty')
        if user is not None and user.is_active:

            auth.login(request, user)
            .....

サーバーを実行していて、フロントエンドからログインしようとすると、このビューは正常に機能します。しかし、このビューのテスト ケースを実行すると失敗します。このビューのテスト コードは次のとおりです。

from testprjct.testapp.models import loginform

class ViewTests(TestCase):
def setUp(self):
    loginform.objects.create(username='test123', password='qwerty')

def test_login(self):
    response = self.client.get('/login/')
    self.assertEqual(response.status_code, 200)

    response = self.client.post('/login/', {"username": "test123", "password": "qwerty"})
    print response
    self.assertEqual(response.status_code, 302)

これは、ログインの詳細が無効であるというメッセージを表示することにより、常に 200 status_code (成功ページにリダイレクトされません) で戻ります。

ログインページでパスワードを忘れた場合のリンクをテストしているときも同じ問題です。有効な電子メール ID が提供されている場合、フロントエンドから正常に動作します。しかし、私のテストケースでは、フロントエンドで指定したものと同じ電子メール ID を提供しているにもかかわらず、電子メール ID にユーザー アカウントが関連付けられていないというエラー メッセージが常に表示されます。

何か提案はありますか?私はすでに問題を理解しようとして、これに多くの時間を費やしてきました。

4

1 に答える 1

0

Django はテスト用に新しいデータベースをセットアップするため、既存のデータにはアクセスしません。テスト自体またはメソッドで必要なデータを作成する必要がありますsetUp

于 2013-05-13T06:27:57.980 に答える