회원가입 test Api Assertion Error
해결완료...
user: User = User.create(username=request.username, hashed_password=hashed_password)저 부분에서 username 안하고, positional Arugment처럼
User.create(request.username)이런 식으로 코드를 썻네요.. 파이썬에서는 named Argument형식을 맞춰야 하나요?
test api user 코드 입니다.
def test_user_sign_up(client, mocker):
hash_password = mocker.patch.object(
UserService, "hash_password", return_value="hashed"
)
user_create = mocker.patch.object(
User, "create", return_value=User(id=None, username="test", password="hashed")
)
mocker.patch.object(
UserRepository,
"save_user",
return_value=User(id=1, username="test", password="hashed"),
)
body = {"username": "test", "password": "plain"}
response = client.post("/users/sign-up", json=body)
hash_password.assert_called_once_with(plain_password="plain")
user_create.assert_called_once_with(username="test", hashed_password="hashed")
assert response.status_code == 201
assert response.json() == {"id": 1, "username": "test"}
깃 헙 나온 코드로도 해봤지만, 여전히
user_create.assert_called_once_with()이 부분에서 에러가 납니다. 주석처리하면 잘 통과 되구요.
아래가 에러 메세지 내용이고, 혹시 오타 있을까봐 깃허브 코드 그대로 가져와도 동일하네요.
test_users_api.py:5 (test_user_sign_up)
{'hashed_password': 'hashed'} != {'hashed_password': 'hashed', 'username': 'test'}
Expected :{'hashed_password': 'hashed', 'username': 'test'}
Actual :{'hashed_password': 'hashed'}
expected는 적었떤 username="test"가 나와야 하는데 , 실제는 없나봅니다. 그래서
user_create.assert_called_once_with(hashed_password="hashed") 이런식을 변경하면, 아래처럼 여전히 통과 하지 못하네요
('test',) != ()
Expected :()
Actual :('test',)
답변 1
0
안녕하세요. 빠르게 해결하셨다니 다행입니다.
아래와 같이 arguments를 호출한 방법에 따라서 assert_called_once_with 사용 방법이 달라지게 됩니다.
Keyword Arguments (강의 예시)
User.create(username=request.username, hashed_password=hashed_password)
user_create.assert_called_once_with(username="test", hashed_password="hashed")
Positional Arguments
User.create(request.username, hashed_password)
user_create.assert_called_once_with("test", "hashed")
참고: https://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.assert_called_with
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





