프로그래밍 연습하기

Pycharm Pytest 관련 에러 및 설정 본문

Python

Pycharm Pytest 관련 에러 및 설정

john.k 2021. 5. 17. 13:06
반응형

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를 설정해주었습니다.

그러면 다음과 같이 제가 만든 설정을 사용할 수 있었습니다.

 

반응형
Comments