2012-10-08 7 views
5

私はdjangoビューのunittestを作成しています。私の見解の1つがリダイレクションコード301を返すことがわかりましたが、これは期待されていません。
ここに私のviews.pyがあります。URLにアクセスすると、Djangoテストクライアントは301のリダイレクトを取得します

def index(request): 
    return render(request, 'index.html', 
        {'form': QueryForm()}) 

def query(request): 
    if request.is_ajax(): 
     form = QueryForm(request.POST) 
     return HttpResponse('valid') 

以下はurls.pyです。

urlpatterns = patterns('', 
     url(r'^$', 'core.views.index'), 
     url(r'^query/$', 'core.views.query') 
     ) 

ユニットテストは失敗します。

def so_test(self): 
    response = self.client.post('/') 
    self.assertEquals(response.status_code, 200) 

    response = self.client.post('/query', {}) 
    self.assertEquals(response.status_code, 200) 

私の質問は、ステータス301が返された理由は?

+0

301を返しているどっち?それは完全なコードですか? –

+0

@DanielRoseman第2の1つは、それがはっきりしていなかったことをごめんね。 –

答えて

25

/query/に一致するURLを定義しましたが、/queryをテストしています。 Djangoはあなたの設定にAPPEND_SLASH=Trueがあるので、後ろにスラッシュを入れたURLにリダイレクトしています。あなたはおそらくにテストを変更したい

response = self.client.post('/query/', {}) 
+0

はい、これは非常に説明しています!ありがとう:)それは今動作します。 –

関連する問題