Python용 Test Impact Analysis This product is not supported for your selected
Datadog site . (
).
호환성 Test Impact Analysis는 다음 버전 및 테스트 프레임워크에서만 지원됩니다.
pytest>=7.2.0ddtrace>=2.1.0부터.Python>=3.7부터.coverage>=5.5 필수.pytest-cov와 호환되지 않음(알려진 제한 사항 참고)unittestddtrace>=2.2.0부터.Python>=3.7부터.coverage설정 테스트 최적화 Test Impact Analysis를 설정하기 전에 Python용 Test Optimization 을 설정하세요. Agent를 통해 데이터를 보고하는 경우 v6.40 이상 또는 v7.40 이상을 사용하세요.
Activate Test Impact Analysis for the test service You, or a user in your organization with the Intelligent Test Runner Activation (intelligent_test_runner_activation_write) permission, must activate Test Impact Analysis on the Test Service Settings page.
필수 종속 항목 Test Impact Analysis에는 coverage 패키지 가 필요합니다.
예를 들어 CI 테스트 환경에 패키지를 설치하려면 관련 요구 사항 파일에 패키지를 지정하거나 pip를 사용하세요.
이미 coverage 패키지나 플러그인(예: pytest-cov)을 사용하고 있다면 알려진 제한 사항 을 참고하세요.
활성화된 Test Impact Analysis로 테스트 실행 Datadog 통합을 활성화한 상태에서 테스트를 실행하면 Test Impact Analysis가 활성화됩니다. 다음 명령으로 테스트를 실행하세요.
Copy
DD_ENV = ci DD_SERVICE = my-python-app pytest --ddtrace
Copy
DD_ENV = ci DD_SERVICE = my-python-app ddtrace-run python -m unittestTest Impact Analysis 일시적 비활성화 DD_CIVISIBILITY_ITR_ENABLED 환경 변수를 false 또는 0으로 설정하여 Test Impact Analysis를 로컬 환경에서 비활성화할 수 있습니다.
DD_CIVISIBILITY_ITR_ENABLED(선택 사항)Test Impact Analysis 커버리지 및 테스트 건너뛰기 기능 활성화기본값 : (true) Test Impact Analysis를 비활성화하려면 다음 명령을 실행하세요.
Copy
DD_ENV = ci DD_SERVICE = my-python-app DD_CIVISIBILITY_ITR_ENABLED = false pytest --ddtrace
Copy
DD_ENV = ci DD_SERVICE = my-python-app DD_CIVISIBILITY_ITR_ENABLED = false ddtrace-run python -m unittest특정 테스트에 대한 건너뛰기 비활성화 Test Impact Analysis 동작을 재정의하여 특정 테스트를 건너뛰지 않도록 할 수 있습니다. 이러한 테스트를 ‘건너뛸 수 없는 테스트’라고 합니다.
테스트 건너뛸 수 없는 이유는 무엇인가요? Test Impact Analysis는 코드 커버리지 데이터를 사용하여 테스트를 건너뛸지 여부를 결정합니다. 경우에 따라 이 데이터만으로는 결정을 내리기에 충분하지 않을 수 있습니다.
예를 들면 다음과 같습니다:
텍스트 파일에서 데이터를 읽는 테스트 테스트 중인 코드 외부의 API와 상호 작용하는 테스트(예: 원격 REST API) 테스트를 건너뛸 수 없도록 지정하면 Test Impact Analysis에서 커버리지 데이터와 관계없이 테스트를 실행합니다.
호환성 다음 버전에서는 건너뛸 수 없는 테스트가 지원됩니다.
테스트를 unskippable(건너뛸 수 없음)로 표시 pytest 의 skipif 표시 를 사용하면 Test Impact Analysis에서 개별 테스트나 모듈을 건너뛰지 않도록 할 수 있습니다. condition을 False로, reason을 "datadog_itr_unskippable"로 지정하세요.
개별 테스트 다음과 같이 @pytest.mark.skipif 데코레이터를 사용하여 개별 테스트를 건너뛸 수 없음으로 표시할 수 있습니다.
import pytest
@pytest.mark.skipif ( False , reason = "datadog_itr_unskippable" )
def test_function ():
assert True
모듈 다음과 같이 pytestmark 전역 변수 를 사용하여 모듈을 건너뛸 수 있습니다.
import pytest
pytestmark = pytest . mark . skipif ( False , reason = "datadog_itr_unskippable" )
def test_function ():
assert True
참고 : 이는 다른 skip 표시나 condition이 True인 skipif 표시를 덮어쓰지 않습니다.
호환성 다음 버전에서는 건너뛸 수 없는 테스트가 지원됩니다.
unittest에서 테스트를 unskippable(건너뛸 수 없음)로 표시unittest 의 skipif 표시 를 사용하면 Test Impact Analysis에서 개별 테스트를 건너뛰지 않도록 할 수 있습니다. condition을 False로, reason을 "datadog_itr_unskippable"로 지정하세요.
개별 테스트 다음과 같이 @unittest.skipif 데코레이터를 사용하여 개별 테스트를 건너뛸 수 없음으로 표시할 수 있습니다.
import unittest
class MyTestCase ( unittest . TestCase ):
@unittest.skipIf ( False , reason = "datadog_itr_unskippable" )
def test_function ( self ):
assert True
@unittest.skipif를 사용하면 다른 skip 표시나, condition 값이 True인 skipIf 표시를 덮어쓰지 않습니다.
알려진 제한사항 코드 커버리지 수집 커버리지 툴과의 상호작용 Test Impact Analysis가 활성화된 경우 커버리지 데이터가 불완전하게 표시될 수 있습니다. 평소 테스트로 커버되는 코드 줄은 이 테스트가 건너뛰어지면 커버되지 않습니다.
커버리지 패키지와의 상호 작용 Test Impact Analysis는 coverage 패키지의 API를 사용하여 코드 커버리지를 수집합니다. ddtrace의 Coverage 클래스 사용으로 인해 coverage run 또는 pytest-cov와 같은 플러그인의 데이터가 불완전합니다.
테스트 실행 순서를 변경하거나 병렬화를 도입하는 pytest-xdist와 같은 pytest 플러그인을 사용할 때 일부 경쟁 조건으로 인해 예외가 발생할 수 있습니다.
참고 자료