개발자

테스트 시 DB에 저장되는 데이터는 무엇과 비교해야 하나요?

2023년 03월 25일조회 492

안녕하세요. Flask로 프로젝트를 진행중인 대학생입니다. 개발한 api를 테스트 하기 위해 unittest 라이브러리로 테스트 코드를 작성하는데 api 호출 결과가 DB에 올바르게 저장됐는지 확인하고 싶을때는 어떻게 해야하나요? 지금까지는 api호출 이후, DB에 저장되는 결과로 예상되는 데이터를 하드코딩해서 테스트 시 api호출 후 DB에 저장된 값과 비교했습니다. 하지만 결과값이 하드코딩 돼있으니 데이터 구조가 변경되면 일일히 값을 변경해줘야 하는 문제 때문에 더 나은 방법이 있지 않을까? 하는 고민이 생겼습니다. +추가 api호출시 내부에서 랜덤한 값을 결정하는 코드의 경우 테스트 환경에서 멱등성을 보장하는 모듈을 추가로 구현해서 사용하는게 좋을까요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 1

Gabriel_Jay님의 프로필 사진

데이터베이스에 저장된 결과를 확인하기 위해서 하드코딩된 값을 사용하는 것은 좋은 방법이 아닙니다. 이는 데이터베이스 스키마가 변경되거나 테스트 데이터가 변경될 경우에 매우 번거로워질 수 있습니다. 따라서, API 호출 이후에 데이터베이스에 저장된 결과를 확인하는 것은 좋은 방법입니다. 이를 위해서는 테스트 환경에서 사용하는 데이터베이스와 동일한 데이터베이스를 사용하는 것이 중요합니다. 또한, 테스트 케이스에서는 테스트용 데이터를 적용하고, 테스트 완료 후에는 데이터베이스를 초기화하는 작업이 필요합니다. 테스트 케이스에서 데이터베이스에 삽입된 결과를 검증할 때는, 데이터베이스 쿼리를 이용하여 저장된 데이터를 가져와서 예상한 데이터와 비교하는 것이 좋습니다. 이를 위해서는 데이터베이스 ORM을 사용하면 좀 더 편리하게 작성할 수 있습니다. 또한, API 호출 시 내부에서 랜덤한 값을 결정하는 코드가 있다면, 이를 테스트 환경에서는 랜덤한 값을 고정하거나, 또는 미리 정해진 값을 사용하도록 모듈을 구현하는 것이 좋습니다. 이를 통해 테스트의 멱등성을 보장할 수 있습니다. 예를 들어, 랜덤한 값을 결정하는 코드 대신에, 테스트 전용 모듈에서 고정된 값을 반환하도록 작성하는 것이 좋습니다. 이렇게 하면, 테스트를 반복할 때마다 동일한 결과를 보장할 수 있습니다. 도움이 되시길 바랍니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!