🤯 Trobleshooting 

2025년 4월 19일


무슨 오류야? 

        assert response.status_code == 401
>       assert "detail" in response.data  # 일반적으로 에러 메시지가 들어있음
E       assert 'detail' in {'error': {'code': ErrorDetail(string='INVALID_CREDENTIALS', code='authentication_failed'), 'message': ErrorDetail(string='아이디 또는 비밀번호가 올바르지 않습니다.', code='authentication_failed')}}
E        +  where {'error': {'code': ErrorDetail(string='INVALID_CREDENTIALS', code='authentication_failed'), 'message': ErrorDetail(string='아이디 또는 비밀번호가 올바르지 않습니다.', code='authentication_failed')}} = <Response status_code=401, "application/json">.data

accounts\tests\test_login.py:44: AssertionError

 

44번째 줄에서 assertionError래

 assert "detail" in response.data  # 일반적으로 에러 메시지가 들어있음

 

아마 "detail"을 설정 안 해줘서 생긴 오류이지 않을까 싶어 🤔


어떤 작업할 때 발생한 거야? 

login_views.py에 대한 pytest 작업 중에 발생한 문제였어.


뭐 때문에 발생한 거야? 

 

나는 detail 설정 안 하고 error랑 code, message로 설정을 해두었거든!

그래서 발생한 문제라고 생각해.


어떻게 해결한 거야? 

 

loginserializers.py에 오류가 발생하면 

raise AuthenticationFailed(
                {
                    "error": {
                        "code": "INVALID_CREDENTIALS",
                        "message": "아이디 또는 비밀번호가 올바르지 않습니다."
                    }
                }
            )

 

이렇게 반환하도록 설정을 해둬서, test_login.py를 아래의 사진처럼 수정했어.

 

pytest 결과

 

아니,, passed 떠서 좋긴 한데, 왜 test_login.py는 50%만 해당되는 건데,, 😔

auth 관련해서는 테스트가 안 되는 건가,, 🤔


회고

이전엔 Swagger에서 하나하나 다 입력하면서 확인했는데 pytest 덕분에 빠르고 한꺼번에 이것저것 테스트 해볼 수 있어서 좋았다!

🐾Recent posts