djangoアプリのテストをいくつか書いています。私の見解では、「HttpResponseRedirect」を使用して他のURLにリダイレクトします。それをテストするにはどうすればよいですか?
質問する
8859 次
3 に答える
21
DjangoTestCase
クラスには、assertRedirects
使用できるメソッドがあります。
from django.test import TestCase
class MyTestCase(TestCase):
def test_my_redirect(self):
"""Tests that /my-url/ permanently redirects to /next-url/"""
response = self.client.get('/my-url/')
self.assertRedirects(response, '/next-url/', status_code=301)
ステータス コード 301 は、それが永続的なリダイレクトであることを確認します。
于 2012-07-27T09:07:05.603 に答える
15
from django.http import HttpResponsePermanentRedirect
from django.test.client import Client
class MyTestClass(unittest.TestCase):
def test_my_method(self):
client = Client()
response = client.post('/some_url/')
self.assertEqual(response.status_code, 301)
self.assertTrue(isinstance(response, HttpResponsePermanentRedirect))
self.assertEqual(response.META['HTTP_LOCATION'], '/url_we_expect_to_be_redirected_to/')
テストするのが興味深い応答の他の属性があります。オブジェクトに何があるか不明な場合は、いつでも実行できます。
print dir(response)
DJANGO の現在のバージョンの編集
少し簡単になりました。次のようにします。
self.assertEqual(response.get('location'), '/url/we/expect')
とにかくアプリ内のURLである場合は、逆を使用して名前から期待するURLを検索することもお勧めします。
于 2012-07-27T07:38:04.173 に答える