강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

김도균님의 프로필 이미지
김도균

작성한 질문수

[매일 완독 챌린지] 저자와 함께하는 <FastAPI로 기획에서 출시까지>

8.8절 : 파일 업로드 (p366~p389)

351쪽 질문

해결된 질문

작성

·

31

0

351쪽 내용 중에

"테스트할 때 현재 일시는 우리가 원하는 임의의 현재 일시값을 사용하도록 합니다. 종단점 함수에서는 어떻게 해야하고, conftest.py 파일에서 의존성 주입 오버라이드는 어떻게 해야할까요?"

이 질문에 대한 저의 구현이 맞는지 궁금합니다.

 

appserver.apps.calendar.deps.py

image.png

 

appserver.apps.calendar.endpoints.py

image.png

 

conftest.py

image.pngimage.png

3

답변 2

1

김도균님의 프로필 이미지
김도균
질문자

앗, 362쪽에 코드를 제공해주셨네요. 죄송합니다 ^^;

한날님의 프로필 이미지
한날
지식공유자

무엇이 죄송하신 건가요. 중요한 건 학습한 걸 소화하여 직접 문제를 해결하신 것이며, 이는 책과 강의에서 질문을 한 제가 감사한 일인 걸요! 😄

질문 의도와 취지에 정확히 맞게 구현하셨습니다. 🙂

조금 보태자면, 일시 관련하여 테스트 시나리오가 여러 상황이 있는 경우, 픽스처도 여러 개 만들어 쓰곤 합니다. test_utcnow_before_launching, test_utcnow_2035 이런 식으로요. 🙂 우리가 시나리오를 쓰고 이를 테스트 코드로 작성하듯이, 테스트코드나 픽스처도 자연어로 기술한 시나리오처럼 명명하면 좀 더 전달력이 좋아지죠.

0

안녕하세요, 인프런 AI 인턴입니다. 김도균님.

현재 말씀해주신 코드 구현을 보면, FastAPI를 테스트할 때 사용자가 원하는 특정 시간으로 “현재 시간”을 설정하고, 이를 종단점에서 사용할 수 있도록 설정한 것 같습니다.

설명:

  1. deps.py 파일:

    • 여기에서 UtcNow라는 의존성을 정의하여, annotatedDepends를 통해 커스텀이 가능한 현재 시간을 사용하고 있습니다. 테스트 시에 now_in_test로 원하는 임의의 시간을 설정하는 방식으로 보입니다.
  2. endpoints.py 파일:

    • /calendar/test_inject_now_endpoint 엔드포인트를 GET 방식으로 정의하고 있습니다. UtcNow를 사용해 현재 시각(혹은 테스트 시각)을 의존성으로 주입하고 있습니다.
  3. conftest.py 파일:

    • 여기서는 pytest의 픽스처를 사용하여 FastAPI 앱 내 의존성을 오버라이드하도록 설정하였습니다.
    • override_utc_now 함수를 통해 의존성을 오버라이드하고, 이를 fastapi_app 생성 시 반영하여 테스트 환경을 설정합니다.

검토해야 할 점들:

  • 의존성 주입 검증: 테스트 시 UtcNow가 의도한대로 오버라이드 되었는지 검증하기 위해, 실제 호출 후 결과를 확인하는 테스트 케이스를 작성해보시면 좋을 것 같습니다.
  • 픽스처 사용: fastapi_app 픽스처와 실제 실행되는 테스트 간에 의존성 주입이 올바르게 작동하는지 적절한 테스트를 통해 검증이 필요합니다.

관련하여 다음과 같은 이해가 필요할 수 있습니다:
- FastAPI 의존성 주입과 오버라이드
- Pytest Fixtures 사용법

김도균님께서 구현하신 방식은 FastAPI와 pytest를 통합하여 테스트 환경을 설정하는 점에서 잘 이루어진 것으로 보입니다. 약간의 추가적인 확인과 보완을 통해 더욱 견고한 테스트 환경을 구축하실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김도균님의 프로필 이미지
김도균

작성한 질문수

질문하기