2015-02-03 2 views
-1

POST로 호출보기를 테스트하려고합니다. 나는 follow = True을 사용합니다. 하지만 테스트 클라이언트는 GET 메서드를 사용하고 POST 데이터는 전달되지 않습니다. 뷰가django 테스트 클라이언트가 POST를 호출하지 못했습니다. 그러나

from django.utils import unittest 
from django.test.client import Client 

def test_add_to_cart_page(self): 
    response = self.client.post('/aaa/', {'product': 11}, follow=True) 
    self.assertEqual(response.status_code, 200) 

라고 :

def aaa(request): 
    n = request.method 
    d = request.POST 
    template = 'shop/test.html' 
    return render(request, template, d) 

여기 내 테스트입니다 :

여기 내이다. 그것은 POST가 아니지만 GET이 사용되고 POST 매개 변수는 물론 비어 있습니다. 왜 누군가가 그 일이 일어 났는지 말할 수 있습니까?

편집 : 신선한 장고를 가진 깨끗한 venv를 만들었습니다. 그리고 예상대로 작동합니다 (POST를 호출합니다). 덴마크에 썩은 것이있는 것처럼 보입니다.

+3

제대로 사용하고있는 것 같습니다. 그냥 확실하게 ... 템플릿에서 렌더링이 보이지 않기 때문에 GET 요청이라고 가정하고 있습니까? 아니면 request.method를 실제로 검사 했습니까? – dylrei

+0

예 요청을 검사합니다. –

답변

1
follow=True 

은 클라이언트가 리디렉션을 따르는 것을 의미합니다.

response = self.client.post('/aaa/', {'product': 11}, follow=True) 

은 응답에 이어지는 응답 내용이 있음을 의미합니다. 시험에 아무런 문제가 없습니다. 그것은 POST를하고 있어야합니다.


이상한 점은 내가보기에 follow = True를 사용하는 이유를 모르겠다는 것입니다. 또한 내가 왜 그 게시물이 작동하지 않는다고 생각하는지 모르겠다. 시험 결과는 어떻습니까?

+0

단순화 된 예 –

+1

@JoeBobson 사용중인 코드를 볼 수없는 경우 도움이되는 방법을 알아야합니다. 제공되는 예제 코드에 몇 가지 명백한 문제가 있지만 그때 당신은 당신이 가진 것처럼 보이게하는 것이 보이지 않더라도 문제를 확인했다고 말합니다. 이 시점에서 실수를 한 것은 분명하지만 실제 코드를 공유하지 않으므로 오류를 찾는 데 어려움이 있습니다. – dylrei

0

조사한 결과 PREPEND_WWW를 사용하면 테스트 클라이언트 게시 요청이 중단된다는 것을 알게되었습니다.

관련 문제