일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- PostgreSQL
- 프로그래머스 월간 코드 챌린지 시즌1
- Spring Boot
- 파이썬
- 애드센스
- Codeforces
- Python
- 프로그래머스 월간 코드 챌린지
- 바이오데이터 엔지니어
- 프로그래머스 코딩 테스트 연습
- 디자인 패턴
- 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
- heroku
- pycharm
- github actions
- WPF
- 프로그래머스 코딩테스트 연습
- 클린 코드
- 프로그래머스 코딩테스트 연습문제
- git
- 브랜디
- FastAPI
- selenium
- github
- PostgreSQL 설치 시 에러
- c#
- 스코페2021
- Firefox
- terraform
- Word Cloud
- Today
- Total
프로그래밍 연습하기
Pycharm Pytest 관련 에러 및 설정 본문
FastAPI를 사용해서 웹 애플리케이션 프로젝트를 하는 중인데,
테스트를 하려는데 에러가 자꾸 나서 제대로 하지 못했었습니다.
발생한 에러는 Pycharm Run으로 pytest를 이용한 테스트 중에
app = FastAPI()
app.mount("/static", StaticFiles(directory='static'), name="static")
templates = Jinja2Templates(directory='templates')
이 부분에서 StaticFiles에서 static directiory를 찾지 못하는 에러와
templates directiory도 마찬가지로 찾지 못하는 에러였습니다.
그런데 직접 Pycharm 터미널에서
(venv) C:\Users\USER_NAME\PycharmProjects\PROJECT_NAME>pytest
이렇게 테스트를 실행할 경우에는 테스트가 돌아갔습니다.
경로 관련한 문제 같아서 directory에 직접 절대경로를 입력해보니까 돌아갔습니다.
그런데 그렇게 절대경로를 하드코딩해서 사용하는 것은 좀 아닌 것 같아서
계속 경로를 바꿔가고 관련한 에러를 찾아봤는데
찾기가 쉽지 않았습니다.
처음에는 StaticFiles 에서 에러가 뜨니까 이것을 중점으로 해서 찾아봤는데
원인은 다른 곳에 있었습니다.
테스트 로그를 살펴보던 도중
Pytest rootdir이 프로젝트 디렉토리가 아닌 상위 디렉토리로 되어있는 것을 확인할 수 있었습니다.
이것을 수정해주니 제가 생각하던대로 돌아갔습니다.
============================= test session starts =============================
platform win32 -- Python 3.7.2, pytest-6.2.4, py-1.10.0, pluggy-0.13.1 -- C:\Users\USER_NAME\PycharmProjects\PROJECT_NAME\venv\Scripts\python.exe
cachedir: .pytest_cache
rootdir: C:\Users\USER_NAME\PycharmProjects # \PROJECT_NAME을 추가해줘야 한다.
수정하는 방법은 테스트 코드를 오른쪽 클릭해서 More Run/Debug > Modify Run Configuration에 들어갑니다.
사진의 빨간 네모 안에 있는 Working directory를 바꾸어 주었습니다.
이렇게 변경하니 테스트를 제대로 통과하였습니다.
그리고 궁금한 점이 왜 기본 값이 각 프로젝트 디렉토리가 아닌 상위 디렉토리로 되어있는지...
이런 부분은 설정이 자동으로 될 것 같은데,
제가 프로젝트를 만들 때 설정을 잘못했던건지
아니면 구조를 만들어나가는 과정에서 문제가 있었다던지 한건지
어쨌든 IDE와 테스트에 대해서도 그냥 있는대로 사용하는게 아니고
좀 고민을 하고 들여다 봐야 할 것 같습니다.
그런데 아직 하나 해결을 못한 부분은
지금은 테스트 코드에서 오른쪽의 테스트 함수 별 Run이나
테스트 코드 전체를 Run 하는 것은 pytest가 뜨는데
테스트 디렉토리를 오른쪽 클릭하면 Unittest 가 나와서
이것을 어떻게 pytest로 바꿔야 할 지 알아보는 중 입니다.
찾아보니 따로 커스터마이징 할 수 있는 것 같습니다.
Pycharm 상단 메뉴 바에 Run > Edit Configurations
이후 다음과같은 창에서 Python tests에서 + 를 눌러서 새로운 설정을 추가하고
Target과 Working directory를 설정해주었습니다.
그러면 다음과 같이 제가 만든 설정을 사용할 수 있었습니다.
'Python' 카테고리의 다른 글
Pycharm Unexpected Argument 경고 (1) | 2021.07.31 |
---|---|
Venv가 활성화 되어도 경로 인식을 못할 때 (0) | 2021.06.08 |
파이썬으로 특정 폰트의 글자를 이미지로 만들기 (0) | 2021.04.12 |
파이썬 Defaultdict (0) | 2021.04.01 |
파이썬 에러 Convert UTF-8 with BOM to UTF-8 with no BOM in Python 해결 (0) | 2020.11.24 |