<질문>
pytest의 내부 사용 중단 경고를 억제하는 방법이 있습니까?
컨텍스트: 테스트 스위트를 이식하는 것의 어려움을 평가하려고 합니다.nose
에게pytest
. 제품군은 상당히 크고 많이 사용합니다.nose
-스타일yield
기반 테스트 생성기.
먼저 확인하고 싶습니다.기존 테스트는 pytest로 통과한 다음 테스트 생성기를 다음으로 변경할 수 있습니다.parameterized
.
그냥 실행$ pytest path-to-test-folder
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
이 경고를 끄는 방법이 있습니까?
<답변1>
에서pytest --help
:
--disable-pytest-warnings
disable warnings summary, overrides -r w flag
<답변2>
모든 경고를 숨기는 것이 아니라 관련이 없는 경고만 숨기고 싶다고 생각합니다. 그리고 이 경우 가져온 파이썬 모듈에서 폐기 경고가 표시됩니다.
에 대한 pytest 문서 읽기Warnings Capture:
-W 명령줄 옵션과 filterwarnings ini 옵션은 모두 Python 고유의 -W 옵션과 warnings.simplefilter를 기반으로 하므로 다른 예제 및 고급 사용법은 Python 설명서의 해당 섹션을 참조하십시오.
따라서 파이썬으로 경고를 필터링할 수 있습니다.-W
옵션!
그것은 것 같다pytest
모든 필터를 보여주기 때문에 필터를 완전히 제거합니다.DeprecationWarning
실행할 때 및 Python 문서에 대한Default Warning Filters 분명히 말한다 :
일반 릴리스 빌드에서 기본 경고 필터에는 다음 항목(우선순위에 따라): default::DeprecationWarning:__main__ 무시::DeprecationWarning 무시::PendingDeprecationWarning 무시::가져오기 경고 무시::ResourceWarning
따라서 귀하의 경우 다음과 같이 무시하고 싶은 경고 유형을 필터링하도록 하려면DeprecationWarning
, pytest 명령을 다음과 같이 실행하십시오.-W
옵션 :
$ pytest path-to-test-folder -W ignore::DeprecationWarning
편집: 에서colini님의 댓글에 모듈별로 필터링이 가능합니다. 모든 sqlalchemy의 사용 중단 경고를 무시하는 예:
ignore::DeprecationWarning:sqlalchemy.*:
그런 다음 출력에 너무 많은 노이즈를 생성하는 설치된 모듈을 나열할 수 있습니다.pytest
명령줄이 아닌 파일과 함께 사용:
pytest.ini 파일에 해당 필터를 나열하는 것이 좋습니다.
[pytest]
filterwarnings =
ignore::DeprecationWarning
<답변3>
pytest -p no:warnings
, 또는 다음을 pytest.ini 또는 tox.ini에 추가하십시오.
[pytest]
addopts = -p no:warnings
결과는 경고 표시 없이 녹색이 됩니다. 문서 참조https://docs.pytest.org/en/latest/warnings.html#disabling-warnings-summary.
이것은 깨끗한 출력을 원하는 테스트 스위트의 유효한 사용 사례가 될 수 있습니다.
항상 모든 경고를 숨기면 중요한 경고를 놓칠 수 있습니다.If you want to hide only specific warnings, look at Cloc's answer.
<답변4>
pytest.ini 파일에서 다음을 추가할 수 있습니다.
[pytest]
addopts = -p no:warnings
또는 명령줄에서 줄 아래로 전달합니다. 테스트 스위트가 외부 시스템을 사용하여 경고를 처리하는 경우 유용할 수 있습니다.
-p no:경고
또는 사용되지 않는 특정 경고만 숨기려면 pytest.ini 파일에 아래 명령문을 추가하십시오.
[pytest]
filterwarnings =
ignore:.*U.*mode is deprecated:DeprecationWarning
이렇게 하면 메시지 시작이 ".*U.*mode is deprecated"라는 정규식과 일치하는 DeprecationWarning 유형의 모든 경고가 무시됩니다.
또는 권장되지는 않지만 다음을 사용할 수 있습니다.
--disable-경고
테스트 실행 출력에서 경고 요약을 완전히 표시하지 않는 명령줄 옵션입니다.
<답변5>
모든 경고를 숨기고 싶지 않으므로 이것을 넣습니다.pytest.ini
[pytest]
filterwarnings =
ignore::DeprecationWarning
<답변6>
여기link 사용하는 경우 경고를 표시하지 않는 방법pyproject.toml
파일을 구성으로.
[tool.pytest.ini_options]
testpaths = ["./tests/unit"]
filterwarnings = ["ignore:::.*third_party_package.module:123", "ignore:::.*another_module*"]
123
이 경우 억제할 줄 번호입니다.
<답변7>
사용하는 경우setup.cfg
파일에 다음을 입력합니다.
[tool:pytest]
addopts = -p no:warnings
당신은 필요tool:pytest
그냥 대신pytest
하지만 다음과 같이 알려줍니다.
실패: setup.cfg 파일의 [pytest] 섹션이 더 이상 지원되지 않습니다. 대신 [tool:pytest]로 변경하십시오.
'개발 > Python' 카테고리의 다른 글
[파이썬] 함수를 호출할 때 목록을 *args로 변환하는 법? (0) | 2022.10.12 |
---|---|
[파이썬] 멀티스레딩은 모든 스레드가 완료될 때까지 기다립니다 (0) | 2022.10.12 |
[파이썬] len(generator()) 방법 (0) | 2022.10.12 |
[파이썬] pandas DataFrame의 첫 번째 열을 시리즈로 가져오는 방법은 무엇입니까? (0) | 2022.10.12 |