반응형
Django DoesNotExist 예외를 가져 오려면 어떻게합니까?
개체가 삭제되었는지 확인하기 위해 UnitTest를 만들려고합니다.
from django.utils import unittest
def test_z_Kallie_can_delete_discussion_response(self):
...snip...
self._driver.get("http://localhost:8000/questions/3/want-a-discussion")
self.assertRaises(Answer.DoesNotExist, Answer.objects.get(body__exact = '<p>User can reply to discussion.</p>'))
계속 오류가 발생합니다.
DoesNotExist: Answer matching query does not exist.
이미 올바르게 작성 했으므로 DoesNotExist
모델 을 가져올 필요가 없습니다 Answer
. 이 경우 모델 자체의 속성입니다 .
문제는 get
메소드가 전달되기 전에 예외를 발생 시키는 메소드를 호출한다는 것 assertRaises
입니다. unittest 문서에 설명 된대로 인수와 호출 가능한 인수를 분리해야합니다 .
self.assertRaises(Answer.DoesNotExist, Answer.objects.get, body__exact='<p>User can reply to discussion.</p>')
또는 더 나은 :
with self.assertRaises(Answer.DoesNotExist):
Answer.objects.get(body__exact='<p>User can reply to discussion.</p>')
모델에 독립적 인 일반적인 방법으로 예외를 포착하려는 경우 ObjectDoesNotExist
에서 를 가져올 수도 있습니다 django.core.exceptions
.
from django.core.exceptions import ObjectDoesNotExist
try:
SomeModel.objects.get(pk=1)
except ObjectDoesNotExist:
print 'Does Not Exist!'
DoesNotExist
항상 존재하지 않는 모델의 속성입니다. 이 경우에는 그렇습니다 Answer.DoesNotExist
.
주의해야 할 것은 속성이 아니라 두 번째 매개 변수를 호출 가능 assertRaises
해야 한다는 것입니다. 예를 들어, 나는이 진술에 어려움을 겪었다.
self.assertRaises(AP.DoesNotExist, self.fma.ap)
그러나 이것은 잘 작동했습니다.
self.assertRaises(AP.DoesNotExist, lambda: self.fma.ap)
self.assertFalse(Answer.objects.filter(body__exact='<p>User...discussion.</p>').exists())
이것이 내가 그런 시험을하는 방법입니다.
from foo.models import Answer
def test_z_Kallie_can_delete_discussion_response(self):
...snip...
self._driver.get("http://localhost:8000/questions/3/want-a-discussion")
try:
answer = Answer.objects.get(body__exact = '<p>User can reply to discussion.</p>'))
self.fail("Should not have reached here! Expected no Answer object. Found %s" % answer
except Answer.DoesNotExist:
pass # all is as expected
참고 URL : https://stackoverflow.com/questions/11109468/how-do-i-import-the-django-doesnotexist-exception
반응형
'program tip' 카테고리의 다른 글
태그를 올바르게 닫는 방법 ? (0) | 2020.07.27 |
---|---|
클래스 개인 함수와 함께 PHP에서 usort 사용 (0) | 2020.07.26 |
JavaScript 코드를 어떻게 디버깅 할 수 있습니까? (0) | 2020.07.26 |
워크 스테이션에서 개발중인 iOS 애플리케이션으로 장치에서 작성된 파일을 찾아보십시오. (0) | 2020.07.26 |
프로그래밍 방식으로 모카에서 테스트를 건너 뛰는 방법은 무엇입니까? (0) | 2020.07.26 |