Django에서 사용자와 요청을 모의하는 방법
요청 개체 또는 사용자 개체와 상호 작용하는 장고 코드가 있습니다. 예를 들면 다음과 같습니다.
foo_model_instance = models.get_or_create_foo_from_user(request.user)
django python 셸 또는 unittest로 테스트하려는 경우 거기에 무엇을 전달 하시겠습니까? 여기에서는 단순히 User 객체가 수행하지만 모의 요청 객체에 대한 필요성도 자주 나타납니다.
셸 또는 단위 테스트의 경우 :
- 사용자를 어떻게 조롱합니까?
- 요청을 어떻게 모의합니까?
요청을 위해 Django에 포함 된 RequestFactory를 사용 합니다.
from django.test.client import RequestFactory
rf = RequestFactory()
get_request = rf.get('/hello/')
post_request = rf.post('/submit/', {'foo': 'bar'})
@ozan 제안하고 아마와 같은 사용자를 위해, 나는 django.contrib.auth.models.User을 사용 공장 소년 속도 (공장 소년은 DB에 저장하지 않도록 선택할 수 있습니다)
사용자를 어떻게 조롱합니까?
django.contrib.auth.models.User
개체를 초기화 합니다. User.objects.create_user
쉽게 만들 수 있습니다.
요청을 어떻게 모의합니까?
django.http.HttpRequest
개체를 초기화 합니다.
물론 원하는 작업에 따라 바로 가기가 있습니다. user
사용자를 가리키는 속성을 가진 객체가 필요한 경우 , 무언가 (무엇이든)를 만들고 해당 속성을 부여하면됩니다.
Anurag Uniyal이 제안한대로 자신의 모의를 굴 리거나 모의 프레임 워크를 사용할 수 있습니다.
어쨌든 장고에서 하듯이 평범한 사용자를 만들 수 있다는 말에 대한 응답으로 ... 나는 이것이 단위 테스트의 요점을 무너 뜨릴 것을 제안합니다. 단위 테스트는 데이터베이스를 건 드리면 안되지만, 사용자를 생성함으로써 데이터베이스를 변경 한 것이므로 우리가 조롱하려는 이유가됩니다.
여기에서 모의 객체에 대해 읽어보십시오.
http://en.wikipedia.org/wiki/Mock_object
http://www.mockobjects.com/
그리고이 python lib를 사용하여 http://python-mock.sourceforge.net/ 사용자를 모의합니다
.
그렇지 않으면 간단한 User 클래스를 직접 작성할 수 있습니다. 이것을 시작점으로 사용하십시오.
class MockUser(object):
def __call__(self, *args, **kwargs):
return self
def __getattr__(Self, name):
return self
특정 케이스 등 추가
테스트 내에서 하나만 만들 수 있으므로 사용자를 모의 할 필요가 없습니다. 데이터베이스는 테스트가 완료된 후 삭제됩니다.
요청을 모의 처리하려면 Simon Willison 의이 스 니펫 을 사용 하세요 .
참고 URL : https://stackoverflow.com/questions/2036202/how-to-mock-users-and-requests-in-django
'programing' 카테고리의 다른 글
docker compose 빌드 단일 컨테이너 (0) | 2020.11.14 |
---|---|
C # 7 : Out 변수의 밑줄 (_) 및 별표 (*) (0) | 2020.11.14 |
css h1-텍스트 너비 만 (0) | 2020.11.14 |
Vagrant는 VirtualBox 공유 폴더를 마운트 할 수 없습니다. (0) | 2020.11.13 |
JavaScript에서 delete vs setting 요소를 null로 언제 사용해야합니까? (0) | 2020.11.13 |