1

今日、私は Django でテスト ケースを作成する方法を学んでおり、有効なユーザーの認証を確認するためのテスト ケースを作成しました。

from django.test import TestCase
from django.http import HttpRequest
from aptly_dash.views import newRepo, homePage
from selenium import webdriver
from django.test import Client

class MyTestCase(TestCase):

    def setUp(self):
        self.client = Client()
        self.browser = webdriver.Firefox()
    #
    def tearDown(self):
        self.browser.quit()

    def test_redirect(self):
        response = self.client.get('/admin/')
        self.assertRedirects(response, '/admin/login/?next=/admin/')

    def test_login(self):
        # Issue a GET request.
        response = self.client.login(username='rakesh', password='ranjan')
        print response

私はすでにusername='rakesh'and を作成しましたpassword='ranjan'が、responsebe が出てきますFalse。私はテストケースを書くことにかなり慣れていないので、誰かが私のtest_login機能の何が問題なのか教えてくれれば幸いです。また、django URL が認証されていないユーザーに対して 403 禁止されているかどうか、および認証されているがスタッフ ユーザーに対しては 403 禁止されていないかどうかを確認するテスト ケースを作成したいと考えています。誰かが私に良いドキュメントを教えてくれませんか。

4

1 に答える 1

1

ユーザーをセットアップに追加してみてください。

def setUp(self):
    self.client = Client()
    user = User.objects.create_user('rakesh', 'rakesh@rakesh.com', 'ranjan')
        self.browser = webdriver.Firefox()

テストを実行するたびに、「新しいデータベース」が作成されます。

いくつかのテストを実行するためにユーザーをログインさせたい場合は、すべての TestCase でユーザーを作成する必要があります。

最後に、この方法を使用する前にユーザー アカウントを作成する必要があります。上で説明したように、テスト ランナーは、デフォルトでユーザーを含まないテスト データベースを使用して実行されます。その結果、実稼働サイトで有効なユーザー アカウントは、テスト条件下では機能しません。手動 (Django モデル API を使用) またはテスト フィクスチャを使用して、テスト スイートの一部としてユーザーを作成する必要があります。テスト ユーザーにパスワードを持たせたい場合、password 属性を直接設定してユーザーのパスワードを設定することはできないことに注意してください。 set_password() 関数を使用して、正しくハッシュ化されたパスワードを保存する必要があります。または、create_user() ヘルパー メソッドを使用して、正しくハッシュ化されたパスワードで新しいユーザーを作成することもできます。

おそらくこのドキュメントを参照してください。

于 2015-10-11T07:39:51.787 に答える