py.test 내부 사용 중지 경고를 억제하는 방법
파이 테스트의 내부 권장 사항을 억제할 수 있는 방법이 있습니까?
: 하는 것의 어려움을 하려고 합니다.nose
pytest
스위트룸은 상당히 크고 사용 빈도가 높습니다.nose
-스타일의yield
기반 테스트 생성기.
먼저 기존 테스트를 파이테스트로 통과했는지 확인한 다음 테스트 생성기를 다음으로 변경하고 싶습니다.parameterized
.
막달는중리를 실행하는 입니다.$ pytest path-to-test-folder
3 Pytest 3.0.4의 됩니다.
WC1 ~repos/numpy/numpy/lib/tests/test_twodim_base.py yield tests are deprecated, and scheduled to be removed in pytest 4.0
이러한 경고를 해제할 수 있는 방법이 있습니까?
모든 경고를 숨기는 것이 아니라 관련이 없는 경고만 숨기는 것이 좋다고 생각합니다.이 경우 가져온 파이썬 모듈에서 제거 경고가 발생합니다.
Warnings Capture에 대한 pytest 문서 읽기:
-W 명령줄 옵션과 필터 경고 ini 옵션은 모두 Python 자체의 -W 옵션과 warnings.simplefilter를 기반으로 하므로 다른 예제 및 고급 사용 방법은 Python 설명서의 해당 섹션을 참조하십시오.
그래서 당신은 파이썬으로 경고를 필터링할 수 있습니다.-W
옵션!
는 것 같습니다.pytest
에서는 이러한 필터가 필터를 합니다. 모든 필터를 표시하기 때문입니다.DeprecationWarning
를 실행할 때, 그리고 기본 경고 필터에 대한 Python의 문서는 다음과 같이 분명히 말합니다.
일반 릴리스 빌드에서 기본 경고 필터에는 다음 항목(우선 순위 순)이 있습니다.
default::DeprecationWarning:__main__ ignore::DeprecationWarning ignore::PendingDeprecationWarning ignore::ImportWarning ignore::ResourceWarning
그래서 당신의 경우, 무시하고 싶은 경고 유형을 필터링하려면 다음과 같이 하십시오.DeprecationWarning
를 "pytest"와 함께 실행하면 됩니다.-W
예를 들어 다음을 수행합니다.
$ pytest path-to-test-folder -W ignore::DeprecationWarning
EDIT: colini의 코멘트에서 모듈별 필터링이 가능합니다.모든 sqlalchemy에서 사용되지 않는 경고를 무시하는 예:
ignore::DeprecationWarning:sqlalchemy.*:
많은 시킬 수 .pytest
명령줄이 아닌 파일과 함께 사용:
다음과 같은 필터를 pytest.ini 파일에 나열하는 것이 좋습니다.
[pytest]
filterwarnings =
ignore::DeprecationWarning
pytest --help
:
--disable-pytest-warnings
disable warnings summary, overrides -r w flag
pytest -p no:warnings
또는 다음을 파이테스트에 추가합니다.ini 또는 tox.ini:
[pytest]
addopts = -p no:warnings
결과는 경고 표시 없이 녹색으로 표시됩니다.https://docs.pytest.org/en/latest/warnings.html#disabling-warnings-summary 의 설명서를 참조하십시오.
이것은 깨끗한 출력을 원하는 테스트 제품군의 유효한 사용 사례가 될 수 있습니다.
항상 모든 경고를 숨길 경우 중요한 경고를 놓칠 수 있습니다.특정 경고만 숨기려면 Cloc의 답변을 확인합니다.
pytest.ini 파일에서 다음을 추가할 수 있습니다.
[pytest]
addopts = -p no:warnings
또는 명령줄에서 줄 아래를 통과합니다.이 기능은 테스트 제품군이 외부 시스템을 사용하여 경고를 처리하는 경우 유용할 수 있습니다.
-p no:flash
또는 일부 사용되지 않는 특정 경고만 숨기려는 경우 아래 문장을 yypytest.ini 파일에 추가합니다.
[pytest]
filterwarnings =
ignore:.*U.*mode is deprecated:DeprecationWarning
이렇게 하면 메시지의 시작 부분이 정규식 " "과(와) 일치하는 DeprecationWarning 유형의 모든 경고가 무시됩니다.*U.*모드는 더 이상 사용되지 않습니다."
또는 권장되지는 않지만 다음을 사용할 수 있습니다.
--disable-disable-discovery
명령줄 옵션을 사용하여 테스트 실행 출력에서 경고 요약을 완전히 표시하지 않습니다.
는 모든 경고를 을 모든경고숨싶않지이넣다니었습걸아서기에 .pytest.ini
[pytest]
filterwarnings =
ignore::DeprecationWarning
다음은 사용 중인 경우 경고를 억제하는 방법에 대한 링크입니다.pyproject.toml
구성으로 파일을 작성합니다.
[tool.pytest.ini_options]
testpaths = ["./tests/unit"]
filterwarnings = ["ignore:::.*third_party_package.module:123", "ignore:::.*another_module*"]
123
해야 할 줄 입니다.
를 사용하는 경우setup.cfg
위치에 : " 일저위, 치장파:
[tool:pytest]
addopts = -p no:warnings
필요합니다tool:pytest
단순한 의대에 pytest
하지만 그것은 당신에게 다음과 같이 말할 것입니다.
실패: setup.cfg 파일의 [pytest] 섹션은 더 이상 지원되지 않습니다. 대신 [tool:pytest]로 변경하십시오.
파이테스트 파일 자체의 모든 경고를 무시하려면 다음과 같이 하십시오.다음을 파이테스트 파일에 추가하기만 하면 됩니다.
import warnings; warnings.filterwarnings("ignore")
python 문서의 경고 섹션에 잘 설명된 구문 분석 메커니즘을 이해하여 경고를 세부적으로 필터링하는 것도 가능하다는 것을 추가하고 싶습니다.
됩니다.
action:message:category:module:line
이를 통해 특정 모듈에 대해서만 특정 메시지와 함께 특정 경고를 비활성화할 수 있습니다.저에게, 그것은 피테스트 프리즈건을 사용했지만, 짜증나는 것을 보여주지 않았습니다.DeprecationWarning
distutils Version 클래스를 사용합니다.
아래에서 설명된 필터를 적용하지 않으면 파이테스트 러너의 관련 출력 부분은 다음과 같습니다.
.venv/lib/python3.11/site-packages/pytest_freezegun.py:17: 34 warnings
tests/test_folder1/test_1.py: 10 warnings
tests/test_folder1/test_2.py: 4 warnings
/my/project/path/.venv/lib/python3.11/site-packages/pytest_freezegun.py:17: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
if LooseVersion(pytest.__version__) < LooseVersion('3.6.0'):
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
이 은 사여하용을정에 있습니다.pyproject.toml
,DeprecationWarning
를 하지 않은 경우packaging.version
는 완전히 사라졌지만, 파이테스트 프리즈건에 대해서만 다음과 같습니다(전체 프로젝트에 대한 모든 사용 중지 경고를 비활성화하고 싶지 않기 때문입니다).
[tool.pytest.ini_options]
testpaths = ["./tests"]
filterwarnings = ["ignore:.*distutils Version classes.*packaging.version:DeprecationWarning:pytest_freezegun"]
상세:
ignore:.*distutils Version classes.*packaging.version:DeprecationWarning:pytest_freezegun
^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^
action message (regular expression) category module
참고:가 수정되지 될 수 번호를 .DeprecationWarning
.
(댓글에도 필터링 가능성이 언급되었지만, 조금 더 자세히 설명하고 싶었습니다.)
${PYTHON} -m pytest -W ignore::DeprecationWarning
언급URL : https://stackoverflow.com/questions/40710094/how-to-suppress-py-test-internal-deprecation-warnings
'it-source' 카테고리의 다른 글
Firebase 동적 링크 지원 사용자 지정 매개 변수? (0) | 2023.06.06 |
---|---|
경고:-분리된 뷰 컨트롤러에는 뷰 컨트롤러를 표시하지 마십시오. (0) | 2023.06.06 |
보안.예외 권한 거부: 제공자 com.google.android.gms를 엽니다.표현형, 표현형. 기호형.구성 공급자 (0) | 2023.06.06 |
Firebase 스토리지 이미지 저장 및 검색 방법 (0) | 2023.06.06 |
위임:이벤트 이미터 또는 각도로 관찰 가능 (0) | 2023.06.06 |