[파이썬] 테스트시 failed to import 해결 방법

대심이·2024년 3월 17일

파이썬 클린 코드

목록 보기
5/5

파이썬 테스트시 모듈을 찾지 못하는 에러가 잦았다. 그중 내가 시도해서 되었던 방법 위주로 정리해보았다.

1. __init__.py 추가

test 폴더 아래 __init__.py 를 추가한다. 다만 루트 디렉터리에 넣을 경우 다시 모듈을 찾지 못할 수도 있다.

출처: https://stackoverflow.com/a/18971504,
https://stackoverflow.com/a/77671533

2. 테스트 파일에 코드 추가

if __name__ == '__main__':
    unittest.main()

주로 테스트 파일 가장 하단에 이 코드를 추가한다.

출처: https://stackoverflow.com/a/55036056

3. 환경변수 PYTHONPATH 지정

# linux:
PYTHONPATH=/프로젝트/경로

# windows:
set PYTHONPATH=\프로젝트\경로

cmd에서 테스트하기 전에 PYTHONPATH를 잡아준다.

출처: https://stackoverflow.com/a/4580120

4. pytest로 폴더 지정

python -m pytest tests/

pytest로 이렇게 지정할 경우 PYTHONPATH에 자동으로 현재 디렉터리를 추가한다. 3번 방법은 강제로 지정하는 방법이라 이 방법이 더 나아보인다.

출처: https://stackoverflow.com/a/34140498

여기까지 하면 cmd에서 test 돌리는 것은 문제가 없었다. 하지만 IDE에서 test를 실행하면 여전히 프로젝트 구조를 못 잡고 failed to import 에러가 발생했다. 그럴 경우 아래 방법을 사용했다.

5. .env 만들기

PYTHONPATH=\프로젝트\경로

루트에 .env 파일을 만들어서 프로젝트 경로를 지정한다.

출처: https://stackoverflow.com/a/76761237

6. launch.json에도 지정

 "env": {
 	"PYTHONPATH": "\프로젝트\경로"
    }

VS Code를 사용할 경우 launch.json에도 추가한다. VS Code에서 Testing 탭을 클릭하고 셋팅하면 luanch.json 파일이 자동으로 생성되고, 여기에 env를 추가해주면 된다.

출처: https://stackoverflow.com/a/76768366

7. src 폴더 구조와 다른 이름으로 하기

src의 구조와 test의 구조를 동일하게 가져가지 않도록 권장한다.

Intellij IDEA에서는 잘 되었는데 VS Code에서 에러가 발생했을 때 이 방법으로 해결했다. test 아래 폴더명을 src 폴더 아래와 다르게 변경한 이후 잘 동작했다.

출처: https://stackoverflow.com/a/64191386

profile
대범해지고 싶어서 대심이

0개의 댓글