funkload プロキシ レコーダーをセットアップし、funkload ドキュメントの説明に従ってブラウザーを使用してサイトにログインします: http://funkload.nuxeo.org/recorder.html
次に、POST 経由で送信しているものを正確に簡単に確認できます。あなたが思うように、他のパラメーターを送信している可能性があります。次の例では、crsfmiddleware を使用する django ログインをテストしており、redirect_to パラメータも持っているため、ログインが成功した場合にサーバーがリダイレクト先を認識します。テストは実際にはフォームを使用しません。誰かが使用した場合にブラウザーが送信するものを送信するだけです。実際のフォーム機能をテストしたい場合は、セレンのようなものを使用するのが最善の方法です。
crsftoken はリクエストごとに変更されるため、手動で抽出するために追加する必要がありました。また、ログイン ページに戻らないことを確認するためのアサートも追加する必要がありました。
def test_LoginTest(self):
# The description should be set in the configuration file
server_url = self.server_url
# begin of test ---------------------------------------------
# /tmp/tmpMFahey_funkload/watch0001.request
self.get(server_url + "/",
description="Get /")
# /tmp/tmpMFahey_funkload/watch0002.request
reply = self.get(server_url + "/company/config/dashboard/",
description="Get /company/config/dashboard/")
csrftoken = extract_token(self.getBody(), "name='csrfmiddlewaretoken' value='", "' />")
# /tmp/tmpMFahey_funkload/watch0005.request
self.post(server_url + "/accounts/manager/login/?next=/company/config/dashboard/", params=[
['csrfmiddlewaretoken', csrftoken],
['redirect_to', '/company/config/dashboard/'],
['email', 'user'],
['password', '****']],
description="Post /accounts/manager/login/")
self.assert_("login" not in self.getLastUrl(), "Error in login")
# /tmp/tmpMFahey_funkload/watch0008.request
self.get(server_url + "/accounts/manager/logout/",
description="Get /accounts/manager/logout/")
これは、次のフォームで機能します。
<form method="post" action="">
<input type='hidden' name='csrfmiddlewaretoken' value='bb7d67ced4a2c6ee44eba811d44c936d' />
<input type="hidden" name="redirect_to" value="/company/config/dashboard/" id="id_redirect_to" />
<input id="id_email" type="text" class="formtxt fom_size1" name="email" maxlength="100" />
<input id="id_password" type="password" class="formtxt fom_size1" name="password" />
<button class="formbtn" type="submit">Validate</button>