Django : ページが目的の url にリダイレクトされたかどうかをテストする
質問
私のdjangoアプリで、私は認証システムを持っています。だから、私がログインしていない場合、いくつかのプロファイルの個人情報にアクセスしようとすると、私はログインページにリダイレクトされます。
さて、私はこのためのテストケースを書く必要があります。私が得たブラウザからの応答は次のとおりです。
GET /myprofile/data/some_id/ HTTP/1.1 302 0
GET /account/login?next=/myprofile/data/some_id/ HTTP/1.1 301 0
GET /account/login?next=/myprofile/data/some_id/ HTTP/1.1 200 6533
テストはどのように書けばいいのでしょうか?今のところ、こんな感じです。
self.client.login(user="user", password="passwd")
response = self.client.get('/myprofile/data/some_id/')
self.assertEqual(response.status,200)
self.client.logout()
response = self.client.get('/myprofile/data/some_id/')
次に来るのは何だろう?
どのように解決するのか?
Django 1.4です。
https://docs.djangoproject.com/en/1.4/topics/testing/#django.test.TestCase.assertRedirects
Django 2.0です。
<ブロッククオート
SimpleTestCase.assertRedirects(response, expected_url, status_code=302, target_status_code=200, msg_prefix='', fetch_redirect_response=True)
が返されたことを主張します。 ステータスコード にリダイレクトされ、リダイレクトステータスが 期待されるURL (あらゆる GET データを含む)、そして最終的なページが target_status_code .
もしあなたのリクエストが に従います。 引数を使った場合 期待されるURL と ターゲットステータスコード は、リダイレクトチェーンの最終地点の url とステータスコードになります。
もし fetch_redirect_response が 偽の の場合、最終ページはロードされません。テストクライアントは外部 URL を取得できないので、これは特に次のような場合に便利です。 期待されるURL が Django アプリの一部でない場合、特に役に立ちます。
2 つの URL の間で比較を行うとき、スキームは正しく処理されます。リダイレクト先の場所にスキームが指定されていなければ、元のリクエストのスキームが使われます。もし存在すれば 期待されるURL のスキームが比較対象として使われます。
関連
-
[解決済み] Django で完全な/絶対的な URL (ドメイン付き) を取得するにはどうすればよいですか?
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み] Pythonのマルチプロセッシングプールimap_unorderedの呼び出しの進捗を表示しますか?
-
[解決済み] Django 1.7で初期マイグレーションからマイグレートバックする方法は?
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
-
[解決済み] Celeryタスクのユニットテストはどのように行うのですか?
-
[解決済み] if 節の終了方法
-
[解決済み] 単純な文字列からtimedeltaオブジェクトを作成する方法
-
[解決済み] あるメソッドが複数の引数のうち1つの引数で呼び出されたことを保証する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PythonでファイルのMD5チェックサムを計算するには?重複
-
[解決済み] Pythonです。未束縛のメソッドを束縛する?
-
[解決済み] バブルソートの宿題
-
[解決済み] タプルのリストを複数のリストに変換するには?
-
[解決済み] Pandasの'Freq'タグにはどのような値が有効ですか?
-
[解決済み] あるオブジェクトが数であるかどうかを確認する、最もパイソン的な方法は何でしょうか?
-
[解決済み] virtualenv の `--no-site-packages` オプションを元に戻す。
-
[解決済み] Pythonの辞書にあるスレッドセーフについて
-
[解決済み] データクラスとtyping.NamedTupleの主な使用例
-
[解決済み] Python の sorted() はどのようなアルゴリズムを使っているのですか?重複