py.test 내부 지원 중단 경고를 억제하는 방법


97

pytest의 내부 지원 중단 경고를 억제하는 방법이 있습니까?

컨텍스트 : 테스트 스위트를에서 nose로 포팅하는 것이 얼마나 어려운지 평가 하려고 pytest합니다. 이 제품군은 상당히 크고 nose스타일 yield기반 테스트 생성기를 많이 사용합니다 .

먼저 기존 테스트가 pytest로 통과 하는지 확인한 다음 테스트 생성기를 parameterized.

$ pytest path-to-test-folderpytest 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

이러한 경고를 해제하는 방법이 있습니까?

답변:


92

에서 pytest --help:

--disable-pytest-warnings
                      disable warnings summary, overrides -r w flag

4
도움말 텍스트에서 알 수 있듯이 이것은 텍스트 요약 만 생략합니다. 결과는 여전히 노란색이며 경고가 있음을 나타냅니다.
David Pärsson

아래와 같이 pytest.ini 파일에 넣는 것이 좋습니다.
vy32

96

pytest -p no:warnings, 또는 pytest.ini 또는 tox.ini에 다음을 추가하십시오.

[pytest]
addopts = -p no:warnings

결과는 경고 표시없이 녹색으로 표시됩니다. https://docs.pytest.org/en/latest/warnings.html#disabling-warnings-summary의 문서를 참조하십시오 .

이것은 깨끗한 출력을 원하는 테스트 스위트의 유효한 사용 사례가 될 수 있습니다.

항상 모든 경고를 숨기면 중요한 경고를 놓칠 수 있습니다. 특정 경고 만 숨기려면 Cloc의 답변을 참조하십시오 .


2
addopts = -p no:warnings정말 나쁜 생각이며, CloC 솔루션이 훨씬 더 온건하다,하지만 난 때 당신을 사용했다 ignore::InsecureRequestWarning인식되지 않았습니다 당신이 너무 일을 얻을 수 있도록,
피터 M.를 - 모니카의 약자

모든 경고를 지속적으로 비활성화 (예 : pytest.ini 사용)하는 것은 거의 좋은 생각이 아닙니다. CloC가 설명하는대로 Deprecation 경고 (및 모듈 별) 만 비활성화하는 것이이를 수행하는 올바른 방법입니다.
Neowizard

74

모든 경고를 숨기는 것이 아니라 관련없는 경고 만 숨기고 싶지 않다고 생각합니다. 그리고이 경우 가져온 파이썬 모듈의 사용 중단 경고입니다.

경고 캡처 에 대한 pytest 문서를 읽었습니다 .

-W 명령 줄 옵션과 filterwarnings 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

편집 : colini 의 의견에서 모듈별로 필터링이 가능합니다. 모든 sqlalchemy의 지원 중단 경고를 무시하는 예 :

ignore::DeprecationWarning:sqlalchemy.*:

그런 다음 출력에 너무 많은 노이즈를 생성하는 설치된 모듈을 나열 할 수 있습니다. pytest

명령 줄이 아닌 파일과 함께 사용 :

pytest.ini 파일에 이러한 필터를 나열하는 것이 좋습니다.

[pytest]
filterwarnings =
    ignore::DeprecationWarning

11
모듈을 필터링하려면 정규식을 사용합니다. 모든 sqlalchemy 모듈에서 사용 중단 경고를 무시하는 예 :ignore::DeprecationWarning:sqlalchemy.*:
colini

@colini는 -W 플래그에 대한 인수로 실패했지만 내 pytest.ini 파일에서 저에게 효과적이었습니다.
WhiteHotLoveTiger

10

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-warnings

테스트 실행 출력에서 ​​경고 요약을 완전히 억제하는 명령 줄 옵션입니다.


5

모든 경고를 숨기고 싶지 않아서 pytest.ini

[pytest]
filterwarnings =
    ignore::DeprecationWarning
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.