2013-03-18 1 views
0

unittest를 사용하여 API로 일부 엣지 케이스를 테스트합니다. 이러한 모든 경우는 사용자 정의 예외 클래스를 사용하여 400 시리즈 응답 코드를 반환합니다. 불행히도 이러한 사용자 지정 예외를 catch하거나 unittest 검사 자체에서 응답 코드를 읽는 방법을 찾지 못하는 것 같습니다.Python 2.6 unittest로 응답 코드 잡기

내가받은 메시지는 'AppError'예외로 200 또는 300이 아닌 400 응답입니다. 가능한 경우 예외 메시지를 구문 분석하지 않아야합니다. 이것은 또한 Python 2.6 이상에서 작동해야합니다. 내 unittest 검사에서 사용자 정의 예외를 catch하거나 예외 메시지를 구문 분석하지 않고 오류를 일으키는 응답 코드를 판별하려면 어떻게합니까?

답변

0

나는 이것을하는 방법을 알아 냈습니다. Webtest (사용되는 것을 잊어 버린)를 사용하면 매개 변수 expect_errors=True을 전달하고 요청의 반환 값을 저장할 수 있습니다. 그런 다음 내가 살펴 보겠습니다

self.assertEqual('400 Bad Request', response.status) 
1

당신은 예외를 catch하고 400 응답 아니라고 주장 할 것이다 :이 특성으로 오류 코드를 수행하기 위해 예외를 요구

try: 
    call_api_method() 
except AppError as ae: 
    self.assert(ae.errorcode < 400) 

; 예외에서 사용 가능한 속성을 검사해야합니다. 기본적으로 .args이 될 것입니다 (튜플입니다).하지만 예외 코드에 대한 오류 코드도 포함하는 것이 좋습니다.

+0

으로 응답 상태에 대해 확인하실 수 있습니다 - 감사합니다 : D – paradox870

+0

불행하게도 오류가 유용한 속성을하지 않은 것으로 보입니다. 나는 이것을 어떻게해야하는지에 관해 계산할 수 있었다. – paradox870

+0

@ paradox870 : 죄송합니다. 예외가 스트링 메시지 이상을 제공하지 않는다면, 당신은 그렇게 할 수 없다. 그렇지 않으면, 나는 * 도움이되기를 바랍니다. –