테스트케이스들에서 특정 케이스들만 골라 실행한다던지, 무시한다던지의 조작을 할 수도 있습니다.
특정 테스트케이스들에게 어떠한 마크를 넘겨서 관리할 수 있습니다. Pytest에서는 이것을 Marker
라고 합니다.
JUnit 등에서 사용하는 태그라고 생각하시면 편합니다.
일단 사용하기 전에, pytest.ini
에 사용하고자 하는 마커들을 선언해주어야합니다.
markers =
smoke: All critical smoke tests
regression: All regression tests
engine: All car engine tests
body: All car body tests
entertainment: All car entertainment tests
door: All car dor tests
예를 들면, 위와같이 선언해줍니다.
그 다음, 마킹을 하고자하는 테스트케이스 코드들이 있는 파일에, marker
를 import합니다.
from pytest import marker
그 후 마킹하고자 하는 테스트케이스 위에 @
를 사용하여 선언해줍니다.
@mark.engine
def test_engine_functions_as_expected():
assert True
@mark.{markName}
여기서 markName
은, pytest.ini
에 선언한 것들이 해당됩니다.
이후에, pytest -m {markName}
으로 실행하면, 해당 마크가 달린 테스트케이스만 실행할 수 있습니다.
특정 마크만 제외하고 전부 실행한다던지, 특정 마크만 실행하고싶을 때는,
pytest -m "{markName} and / or {markName}"
더블쿼테이션으로 묶어주고 not
/and
/or
를 조합하여 실행해줄 수 있습니다.
테스트코드들을 관리해주는 다른 방법으로는, 해당 함수들을 클래스에 넣어, 메소드로 관리해주는 방법이 있습니다.
@mark.body
class BodyTests:
@mark.door
def test_body_functions_as_expected(self):
assert True
def test_bumper(self):
assert True
def test_windshielf(self):
assert True
이렇게 했을 경우, body
마크를 넣어 실행했을 시, 해당 클래스에 있는 모든 메소드들이 실행됩니다.
body and door
로 했을 경우에는, body
와 door
두 마크에 해당되는 test_body_function_as_expected()
만 실행됩니다.