Flask アプリをテストしています。
要約すると、ここに私の質問があります:
1) 以下のコード ブロックの最終的な URL アサーションが失敗します。Twill によると、実際の URL は「/auth/login」であるため失敗します。つまり、ユーザーは保護された管理ページにリダイレクトされませんでした。なんで?
2) URL アサーションに「/?next='admin'」リクエスト引数を含めるにはどうすればよいですか? 言い換えれば、正しく解決された「次の」引数をテストする方法はありますか?
3) 機能テストにおいて、301 ステータス コードをアサートする以外に、リダイレクトの動作を示す方法はありますか?
これが私のスクリプトのツイル関連の部分です...
t.browser.go(t.url("/auth/login/?next=%2Fadmin%2F"))
url("/auth/login/?next=%2Fadmin%2F")
結果のトレースバックは次のとおりです。
TwillAssertionError: 現在の URL は 'http://127.0.0.1:5000/auth/login/?next=%2Fadmin%2F' です。 「/auth/login/?next=%2Fadmin%2F」と一致しません
注: 奇妙なことに、「go」コマンドの後に 200 ステータス コードをアサートしても、エラーは返されません。上記の URL にログインした後、最終的な URL が実際に管理ページであることを示したいと思います。そのようです...
失敗せずに実行したいテストですが、できません...
def test_redirect_via_url(self):
Twill(self.app, port=8080) を t:
#: ログインする前に管理ページに移動...
t.browser.go(t.url("/admin"))
#: ログイン URL にリダイレクトされた管理者 URL をアサートする
URL('/認証/ログイン')
#: 上記のアサーションは機能しますが...
#: なぜこの URL..「次の」引数をアサートできないのですか?
#: "/auth/login/?next=%2Fadmin%2F"
#: ブラウザのアドレスバーに実際に表示されるもの
#: ともあれ、'/auth/login' URL でログインしてみましょう
fv("1", "ユーザー名", "テスト")
fv("1", "パスワード", "ようこそ1")
参加する()
#: ここで、アプリが実際に保護された管理ページにリダイレクトされることを示したいと思います...
#: localhost/admin の URL を持つ必要があります
URL('/管理者')
#: 上記の URL アサーションは失敗します。送信後の実際の URL は「/auth/login」のままです