내 모델에 대한 단위 테스트를 보완하기 위해 내 뷰에 대한 자세한 기능 테스트를 작성하고 있습니다. 그것은 장고 프로젝트이고 unittest에 장고 테스트 프레임 워크를 내장하고 있습니다. 분명히 이러한 기능 테스트에서 확인해야 할 중요한 사항 중 하나는 사용 권한이 올바르게 설정된다는 것입니다. 이 같은 그 마음에, 내가하려고 해요 뭔가 :장고 테스트에서 권한 오류를 감지합니다.
anonclient = Client()
userclient = Client()
userclient.login(username='test_user', password='test')
adminclient = Client()
adminclient.login(username='test_admin', password='test')
path = "/path/to/my/page"
anonresponse = anonclient.get(path)
userresponse = userclient.get(path)
adminresponse = adminclient.get(path)
나는 adminclient가 제대로 작동하는 동안 anonclient 및 userclient 모두 권한이 거부 된 것을 확인 할 수 있어야합니다. Howerver, 나는 이것이 일어났다 고 테스트 할 수있는 방법을 찾지 못했습니다 !
처음에는 응답이 302 리디렉션인지 확인하기로 결정했는데 (권한 검사에 실패하면 부작용이 리디렉션되기 때문에) 사용자에게 자동으로 리디렉션되는 기능과 사용 권한 확인에 실패했습니다. (보기에서 permission_required 데코레이터의 login_url 매개 변수를 통해 대상 URL을 덮어 쓸 수 있기 때문에 self.assertRedirects (response, url)을 사용할 수 없습니다!)
아마도 내가 user_passes_test 데코레이터를 확장하여 테스트가 실패하면 응답 객체에 대한 속성? 그런 다음 테스트에서 확인할 수 있습니다. 요청의 부작용이 발생했는지 확인하여 요청의 성공 여부를 확인해야합니다. 이렇게하면 효과가 있지만, 특히 많은 수표가 수행되는 등 매우 오랜 시간이 걸릴 것입니다.
나는이 문제를 다루는 첫 사람이라고 상상할 수 없습니다.이 문제를 해결할 올바른 방법은 무엇입니까? 또는 무엇을 놓쳤습니까?
대단히 감사합니다.
감사합니다 저스틴,하지만 내 질문에 대한 오해했습니다 - 나는 후속 얻을 성공했는지 또는 사용 권한 오류가 발생하는지 (결과 리디렉션 함께) 확인해야합니다. 로그인이 정상적으로 작동합니다. 장고보기에서 권한 검사가 작동하는지 테스트 할 수 있어야합니다. – adamnfish
결과 URL에 액세스하려고 시도했는지 확인해야합니다. my_url = '/ foo /' resp = c.get (my_url) 그런 다음 결과 페이지와 관련된 항목에 대해''resp'' 개체를 검사 할 수 있습니다. docs.djangoproject.co.kr/ko/dev/topics/testing/# testing-responses 구체적으로, 상태 코드, 올바른 템플릿이 사용되었는지 확인하는 것 등. –
내가 말했듯이 리디렉션을 제공하는보기와 사용자가 테스트에 실패하여 리디렉션되는보기의 차이점을 알리고 싶습니다. 내가 부작용이나 결과 페이지 냄새를 검사 할 수 있다는 것을 알고있다. (실제로 이것은 내가 현재하고있는 일이다.) 그러나 사용자가 테스트를 통과하지 못했다는 것을 감지 할 수있는 방법이 있는지 궁금했다. 직접 실행하십시오. 1.2 릴리스 이후에 기능 요청을 제출하거나 패치 된 user_passes_test 데코레이터를 직접 롤백 할 것으로 생각됩니다. – adamnfish