2017-03-14 10 views
0

내 장고 응용 프로그램의 외부 마주 보는 API에 단위 테스트 케이스를 작성하려고합니다. 나는 tempcontent이라는 두 개의 필드를 가진 Dummy이라는 모델을 가지고있다. 다음 함수는 content 필드를 가져 오기 위해 타사에서 호출합니다. temp은 인덱싱 된 고유 키입니다.단위 테스트 외부 마주보고 함수

@csrf_exempt 
def fetch_dummy_content(request): 
    try: 
     temp = request.GET.get("temp") 
     dummy_obj = Dummy.objects.get(temp=temp) 
    except Dummy.DoesNotExist: 
     content = 'Object not found.' 
    else: 
     content = dummy_obj.content 

    return HttpResponse(content, content_type='text/plain') 

다음 단위 테스트 케이스가 있습니다.

def test_dummy_content(self): 
    params = { 
     'temp': 'abc' 
    } 
    dummy_obj = mommy.make(
     'Dummy', 
     temp='abc', 
     content='Hello World' 
    ) 
    response = self.client.get(
     '/fetch_dummy_content/', 
     params=params 
    ) 
    self.assertEqual(response.status_code, 200) 
    self.assertEqual(response.content, 'Hello World') 

내가 테스트 케이스를 실행할 때마다, 그것은 exception로 전환되고 Object not found. 대신 Hello World 반환합니다. 추가 디버깅을 수행 한 결과 temp은 요청 객체의보기 기능에서 항상 None이라는 메시지를 전달했지만 params에 전달했습니다.

내가 누락되어서 알아낼 수 없을 수도 있습니다. 이러한 종류의 기능을 테스트하는 적절한 방법은 무엇입니까?

답변

1

There's no params parameter for the get 또는 클라이언트의 다른 기능 중 일부는 아마도 data입니다. 당신이 너무 self.client.get('/fetch_dummy_content/', params)을 할 수 있도록

response = self.client.get(
    '/fetch_dummy_content/', 
    data=params 
) 

그것은, 어쨌든 두 번째 인수입니다.

환경에 알 수없는 매개 변수가 포함되어 잘못된 이름을 사용하여 오류가 발생하지 않는 이유를 설명합니다.

+0

고마워요. – Pattu