0

ユーザーがホームページにレコードを追加し、後で保存されたページでレコードを表示できるようにするテストしたい機能があります。これは、アプリの実行時に機能します。

以下のテストを最初に実行すると、ユーザーはログインしますが、ブラウザーの URL が /saved を指すと、ユーザーは AnonymousUser になります。

これには理由がありますか?以下は私のコードです。

テスト:

def test_viewing_logged_in_users_saved_records(self):

    # A user logs in
    self.client.login(username = 'testuser1', email='testuser1@test.com', password = 'testuser1password')
    self.browser.get(self.live_server_url)

    # set up our POST data - keys and values are strings
    # and post to home URL
    response = self.client.post('/',
                                {'title': TestCase3.title
                                 })

    # The user is redirected to the new unit test display page
    self.assertRedirects(response, 'unittestcase/hLdQg28/')

    # Proceeds to the page where they can see their saved records
    self.browser.get(self.live_server_url + '/saved')

    # The user can view the tests that they have saved
    body = self.browser.find_element_by_tag_name('body')
    self.assertIn(TestCase3.title, body.text)

意見:

def home_post(request):
    logging.warning('In home_post') 
    logging.warning(request.user) 
    if request.method == 'POST':
        if request.user.is_authenticated():
    ....

def saved(request):
    logging.warning('In saved')
    logging.warning(request.user)
    if request.user.is_authenticated():
    ....

ロギング:

WARNING:root:In home_post
WARNING:root:testuser1

WARNING:root:In saved
WARNING:root:AnonymousUser
4

1 に答える 1

4

ホーム URL への最初のポスト リクエストでは、ログインしたダミー クライアントを使用します。

/savedURLへのリクエストはself.browser、ログインしていない を使用しています。

同じテストでself.clientとの両方を使用している理由は明確ではありません。self.browserこのテストでライブ サーバーを使用する必要がない場合は、self.client全体で使用します。あなたが示した例では、次のことができます:

response = self.client.get('/saved')
self.assertContains(response, TestCase3.title)

ライブ サーバーを使用する必要がある場合は、Selenium クライアントを使用してログインする例について、ライブ サーバーのテスト ケース ドキュメントを参照してください。

于 2013-10-21T18:15:11.677 に答える