UFO ET IT

py.test를 사용하여 테스트를 비활성화하려면 어떻게합니까?

ufoet 2021. 1. 13. 07:27
반응형

py.test를 사용하여 테스트를 비활성화하려면 어떻게합니까?


여러 테스트가 있다고 가정 해 보겠습니다.

def test_func_one():
    ...

def test_func_two():
    ...

def test_func_three():
    ...

py.test가 해당 테스트를 실행하지 못하도록 방지하기 위해 함수에 추가 할 수있는 데코레이터 또는 유사한 것이 있습니까? 결과는 다음과 같을 수 있습니다.

@pytest.disable()
def test_func_one():
    ...

def test_func_two():
    ...

def test_func_three():
    ...

py.test 문서에서 이와 같은 것을 검색했지만 여기에 뭔가 빠진 것 같습니다.


Pytest에는 여기 문서 에서 찾을 수있는 Python unittest 모듈 ( skip사용) 유사한 skip 및 skipif 데코레이터가 있습니다 .skipIf

링크의 예는 여기에서 찾을 수 있습니다.

@pytest.mark.skip(reason="no way of currently testing this")
def test_the_unknown():
    ...

import sys
@pytest.mark.skipif(sys.version_info < (3,3),
                    reason="requires python3.3")
def test_function():
    ...

첫 번째 예는 항상 테스트를 건너 뛰고 두 번째 예에서는 조건부로 테스트를 건너 뛸 수 있습니다 (테스트가 플랫폼, 실행 가능 버전 또는 선택적 라이브러리에 따라 달라지는 경우 유용합니다.

예를 들어, 누군가가 테스트를 위해 pandas 라이브러리를 설치했는지 확인하고 싶다면.

import sys
try:
    import pandas as pd
except ImportError:
    pass

@pytest.mark.skipif('pandas' not in sys.modules,
                    reason="requires the Pandas library")
def test_pandas_function():
    ...

skip장식은 일을 할 것입니다 :

@pytest.mark.skip(reason="no way of currently testing this")
def test_func_one():
    # ...

( reason인수는 선택 사항이지만 항상 테스트를 건너 뛰는 이유를 지정하는 것이 좋습니다).

skipif()특정 조건이 충족되면 테스트를 비활성화 할 수도 있습니다.


이러한 데코레이터는 메서드, 함수 또는 클래스에 적용 할 수 있습니다.

모듈의 모든 테스트건너 뛰 려면 전역 pytestmark변수를 정의 하십시오.

# test_module.py
pytestmark = pytest.mark.skipif(...)

감가 상각되었는지 확실하지 않지만 pytest.skip테스트 내 에서 함수 를 사용할 수도 있습니다 .

def test_valid_counting_number():
     number = random.randint(1,5)
     if number == 5:
         pytest.skip('Five is right out')
     assert number <= 3

테스트가 실패 할 것으로 의심되는 경우에도 테스트를 실행할 수 있습니다. 이러한 시나리오의 경우 https://docs.pytest.org/en/latest/skipping.html@ pytest.mark.xfail 데코레이터를 사용하도록 제안합니다.

@pytest.mark.xfail
def test_function():
    ...

In this case, Pytest will still run your test and let you now if it passes or now, but won't complain and break the build.

ReferenceURL : https://stackoverflow.com/questions/38442897/how-do-i-disable-a-test-using-py-test

반응형