pytest를 사용하여 VSCODE에서 python 테스트 설정 문제 (Issues setting up python testing in VSCODE using pytest)


문제 설명

pytest를 사용하여 VSCODE에서 python 테스트 설정 문제 (Issues setting up python testing in VSCODE using pytest)

Python 확장과 함께 VSCode의 테스트 확장을 사용하려고 합니다. 테스트 라이브러리로 pytest를 사용하고 있습니다. 내 폴더 구조는 다음과 같습니다.

PACKAGENAME/
├─ PACKAGENAME/
│  ├─ __init__.py
│  ├─ main.py
├─ tests/
│  ├─ test_main.py
├─ requirements.txt

test_main.py 파일에서 테스트하기 위해 패키지 코드를 가져오려고 합니다.

from PACKAGENAME import *

명령줄의 루트 디렉터리 PACKAGENAME에서 테스트를 제대로 실행하는 python ‑m pytest 명령을 사용할 수 있습니다. 모듈을 찾지 못하는 문제는 없습니다. 그러나 VSCode 테스트 탭을 사용하려고 하면 테스트가 발견되지만 다음과 같은 오류가 발생합니다.

=================================== ERRORS ====================================
_____________________ ERROR collecting tests/test_main.py _____________________
ImportError while importing test module 'd:\PATH\TO\PACKAGENAME\tests\test_main.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
C:\Users\USER\anaconda3\envs\uni\lib\importlib\__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests\test_main.py:1: in <module>
    from PACKAGENAME import *
E   ModuleNotFoundError: No module named 'PACKAGENAME'
=========================== short test summary info ===========================

명령줄을 사용하지 않고도 이 작업을 수행할 수 있는 방법이 있습니까?


참조 솔루션

방법 1:

I suggest that you try like this:

  • make sure that your VS Code workspace is set to the parent directory of (the root directory) PACKAGENAME
  • add an empty __init__.py file in testsdirectory
  • in test_main.py, replace from PACKAGENAME import * with from PACKAGENAME.main import *

(by Jamie MairLaurent)

참조 문서

  1. Issues setting up python testing in VSCODE using pytest (CC BY‑SA 2.5/3.0/4.0)

#Python #visual-studio-code #pytest #Testing






관련 질문

Python - 파일 이름에 특수 문자가 있는 파일의 이름을 바꿀 수 없습니다. (Python - Unable to rename a file with special characters in the file name)

구조화된 배열의 dtype을 변경하면 문자열 데이터가 0이 됩니다. (Changing dtype of structured array zeros out string data)

목록 목록의 효과적인 구현 (Effective implementation of list of lists)

for 루프를 중단하지 않고 if 문을 중지하고 다른 if에 영향을 줍니다. (Stop if statement without breaking for loop and affect other ifs)

기본 숫자를 10 ^ 9 이상으로 늘리면 코드가 작동하지 않습니다. (Code fails to work when i increase the base numbers to anything over 10 ^ 9)

사용자 지정 대화 상자 PyQT5를 닫고 데이터 가져오기 (Close and get data from a custom dialog PyQT5)

Enthought Canopy의 Python: csv 파일 조작 (Python in Enthought Canopy: manipulating csv files)

학생의 이름을 인쇄하려고 하는 것이 잘못된 것은 무엇입니까? (What is wrong with trying to print the name of the student?)

다단계 열 테이블에 부분합 열 추가 (Adding a subtotal column to a multilevel column table)

여러 함수의 변수를 다른 함수로 사용 (Use variables from multiple functions into another function)

리프 텐서의 값을 업데이트하는 적절한 방법은 무엇입니까(예: 경사하강법 업데이트 단계 중) (What's the proper way to update a leaf tensor's values (e.g. during the update step of gradient descent))

Boto3: 조직 단위의 AMI에 시작 권한을 추가하려고 하면 ParamValidationError가 발생합니다. (Boto3: trying to add launch permission to AMI for an organizational unit raises ParamValidationError)







코멘트