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」のままです