0

私はフィクスチャのセットを持っています:

@pytest.fixture
def user()
    # A Django user

@pytest.fixture
def browser()
    # Splinter browser

@pytest.fixture
def logged_user(live_server, browser, user)
    browser.visit(url)
    browser.fill('username', user.username)
    browser.fill('password', 'abc')
    browser.find_by_id('login').first.click()
    return user

それらを使用するテストを実行すると、

HttpResponseError: 403 - Forbidden

ブラウザー (firefox) は、次の 4 つのアクションを実行します。

  • ログインページにアクセスする (成功)
  • ログインフォームに入力 (成功)
  • ブラウザは自動的にインデックス ページにリダイレクトされます (成功、ユーザーは認証されます)。
  • ブラウザがサイトの別のページにアクセスする:失敗

私のテストの本体は基本的に次のとおりです。

@pytest.mark.django_db(transaction=True)
@pytest.mark.selenium
def test_children_fed_report(live_server, browser, logged_user, page_data):
    url = reverse('app.myview')
    browser.visit(live_server.url + url)

認証コンテキスト プロセッサは、匿名ユーザーで埋められる最後の呼び出しを除いて、ユーザー変数に正しい値 (ログに記録されたユーザー) を埋めます。

これらの両方の回答 ( firstsecond ) は役に立ちません:auth_loginが呼び出され、最後のステップの前にユーザーが実際に認証されます。

アドバイスをよろしくお願いします!

4

0 に答える 0