私はフィクスチャのセットを持っています:
@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)
認証コンテキスト プロセッサは、匿名ユーザーで埋められる最後の呼び出しを除いて、ユーザー変数に正しい値 (ログに記録されたユーザー) を埋めます。
これらの両方の回答 ( first、second ) は役に立ちません:auth_login
が呼び出され、最後のステップの前にユーザーが実際に認証されます。
アドバイスをよろしくお願いします!