시간 유효성 체크 함수 개선 및 테스트코드를 맞추어 수정하며 알게된 것.
- 1 -
시간유효성 체크를 위해, 함수를 작성하며 사용했던 ValidationError
raise serializers.ValidationError 를 사용할 경우 status는 400_Bad_Request 에러를 뱉는다
- 2 -
테스트 코드를 수정하면서 가져온 오류 메세지를 assertEqual로 비교하고 싶었다.
가져오는 응답 메세지는 아래와 같이 출력된다.
print("⭐️", response.data)
⭐️ {'error': ErrorDetail(string='모집 시작시간 오류. 현재 이후의 시점을 선택해주세요, code='invalid')}
response.data["error"] 로 출력하면 value값에 있는 내용이 모두 출력되며 에러 메세지만을 비교할 수 없다.
>>> ErrorDetail(string='모집 시작시간 오류. 현재 이후의 시점을 선택해주세요, code='invalid'
에러 메세지를 가져다 쓰는 방법을 세 가지 정도를 찾아 테스트해보았다.
1) .title()
2) str(error)
3) response.data['key'][0]
def test_create_grouppurchase_feed_open_fail(self):
"""공구 게시글 open 시간이 현재시간보다 느리게 생성"""
response = self.client.post(
path=self.path,
data=self.grouppurchase_data_open_fail,
HTTP_AUTHORIZATION=f"Bearer {self.access_token}",
)
self.assertEqual( -- 여기에 위의 3가지 방법을 적용 -- ), "모집 시작시간 오류. 현재 이후의 시점을 선택해주세요.")
self.assertEqual(response.status_code, 400)
1) .title() 굿 ✅
self.assertEqual(response.data['error'].title(), "공구 시작 시간보다 이후의 시점을 선택해주세요.")
2) str(error) 굿 ✅
self.assertEqual(str(response.data['error']), "공구 시작 시간보다 이후의 시점을 선택해주세요.")
3) response.data['key'][0] 는 fail ❌
self.assertEqual(response.data['error'][0], "현재 이후의 시점을 선택해주세요.")
AssertionError: '현' != '현재 이후의 시점을 선택해주세요.'
- 현
+ 현재 이후의 시점을 선택해주세요.
'AI 웹개발반 > Python, Django' 카테고리의 다른 글
[Django] datetime compare 오류, naive와 aware (0) | 2023.07.06 |
---|---|
[Django] JSONfield (0) | 2023.07.04 |
[Django + Vue] Profile에 새로운 내용 가져와 추가하기 (0) | 2023.06.30 |
[Django] QuerySet 메서드와 filter option (0) | 2023.06.29 |
[Django] datetime을 활용해 시간 비교하기 (0) | 2023.06.27 |