TestSuite search and execute using Marker

Dahun Yoo·2021년 1월 16일
0

Introduce to Pytest

목록 보기
2/7
post-thumbnail

테스트케이스들에서 특정 케이스들만 골라 실행한다던지, 무시한다던지의 조작을 할 수도 있습니다.

Marker

특정 테스트케이스들에게 어떠한 마크를 넘겨서 관리할 수 있습니다. Pytest에서는 이것을 Marker 라고 합니다.
JUnit 등에서 사용하는 태그라고 생각하시면 편합니다.

pytest.ini

일단 사용하기 전에, 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

예를 들면, 위와같이 선언해줍니다.

testcase

그 다음, 마킹을 하고자하는 테스트케이스 코드들이 있는 파일에, 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 를 조합하여 실행해줄 수 있습니다.

Class

테스트코드들을 관리해주는 다른 방법으로는, 해당 함수들을 클래스에 넣어, 메소드로 관리해주는 방법이 있습니다.

@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 로 했을 경우에는, bodydoor 두 마크에 해당되는 test_body_function_as_expected() 만 실행됩니다.

profile
QA Engineer

0개의 댓글