inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! FastAPI 입문

(실습) 테스트 코드 - DELETE API

pytest는 어떻게 모킹함수를 인지하는지

해결된 질문

316

유준모

작성한 질문수 10

0

안녕하세요 강사님

강의 정말 재밌게 보고 있습니다.

수강 도중 궁금한 내용이 생겨 질문 남깁니다.

mocker.patch("main.get_todo_by_todo_id",
             return_value=Todo(id=1,contents="todo",is_done=True))

여기서 인자값으로 문자열 main.get_todo_by_todo_id 를 전달했는데, pytest는 어떻게 저 함수를 모킹대상으로 인지하나요? 개념적으로 설명해주시면 감사합니다~!!

 

response = client.patch("/todos/1", json={"is_done":False})

해당 api 를 호출하고 실행하는 과정에서

main_get_todo_by_todo_id 함수를 호출할 때 어떻게 모킹처리가 되는지 궁금합니다.

python 리팩토링 orm FastAPI pytest

답변 1

0

신동현

안녕하세요. mocker fixture를 통해 patch()에 문자열을 전달하면 해당 경로의 함수가 호출되지 않고, Mock 객체가 대신 이용되며 이 때 반환값으로는 return_value로 지정한 값이 이용됩니다.

0

유준모

넵넵 그 부분은 이해가 되었는데, 어떻게 해당 함수가 호출되지 않고 mock 객체로 분기처리 되는건지 내부 원리가 궁금해서요 ~

1

신동현

pytest의 lifecycle 안에서 import 된 모듈 대신 mocker에 지정된 모듈을 대신 호출하도록 내부처리가 되어 있을 것 같아요. 자세한 내용은 python unittest mock의 구현이나 pytest mock 구현을 직접 확인 부탁드립니다.

FasAPI Swagger UI에서 단일조회 todo_id 를 사용했는데, 입력값에 1을 넣으니 오류가 뜹니다 ㅠ

0

87

2

DB 질문

0

81

2

Post API 강의 질문

0

55

2

post 작성 오류

0

107

3

uvicorn 종료 문제

0

436

2

왜 return타입이 ToDo라는 스트링인가요?

0

130

2

ORM 연관관계

0

109

2

Oracle DB 연결과 관련해 질문이 있습니다..

0

153

2

섹션 2, 3의 PATCH API의 차이점

0

132

1

ORM 테이블 생성

0

119

1

테스트 코드 오류

0

177

1

orm relationship 정의 중 해당 에러 발생 시 어떻게 고쳐야 하는걸까요

0

214

3

FastAPI 폴더 구조에 대해 질문이 있습니다.

0

412

2

질문 있습니다.

0

161

2

ORM 개념

0

133

1

mysql root 비밀번호 변경관련

0

296

2

[질문] patch API

0

151

3

디자인 패턴

0

128

1

main.py 리로드문제

0

235

2

인터프리터 오류

0

286

4

로그 저장에 대한 질문입니다.

0

100

1

Internal Server Error

0

240

2

PATCH API - 수정

0

199

2

파이참 임포트 문제

0

263

1