TL;DR
Graham Dumpleton이 Python의 함수와 메서드를 감싸 테스트 대체와 실행 추적에 함께 활용하는 새 라이브러리 wrapture를 공개했습니다. Wrapture는 호출을 다른 값으로 바꾸거나 원래 메서드의 반환값을 변환할 수 있으며, OpenTelemetry 연동과 설정 파일 기반 추적 기능도 제공합니다. 예시에서는 Gateway.charge의 반환값을 stub으로 대체하거나 원래 결과의 id만 바꾼 뒤 OrderService.place를 검증합니다. 프로젝트의 모든 코드와 문서는 AI assistant가 작성했지만, 설계와 판단은 Dumpleton이 맡았고 일회성 프롬프트에 의존하는 vibe coding과는 다르다고 밝혔습니다.
섹션별 상세
capture = "summary"
[[observe]]
target = "domain:Calculator"
name = ["outer", "inner"]
[[sink]]
type = "jsonlines"
path = "trace.jsonl"설정 파일만으로 Calculator의 특정 메서드 호출을 관찰하고 JSON Lines 형식의 trace.jsonl 파일에 기록합니다.
def test_stub_with_wrapture():
with wrapture.binding( Gateway, "charge" ).on_call.returns({ "id": "stub", "amount": 0} ):
assert OrderService().place( 500 )["id"] == "stub"Gateway.charge를 감싼 범위 안에서 고정 반환값을 지정하고 OrderService.place의 결과를 검증합니다.
def test_pinned_result_with_wrapture():
charge = wrapture.binding( Gateway, "charge" )
charge.on_call.transforms_result( lambda r: {**r, "id": "ch_TEST"} )
with charge:
assert OrderService().place( 500 ) == { "id": "ch_TEST", "amount": 500 }원래 Gateway.charge를 호출한 뒤 반환 객체의 id만 변환해 테스트 결과를 고정합니다.
용어 해설
- Monkey Patching
- — 실행 중인 프로그램의 함수나 메서드를 원래 코드를 직접 수정하지 않고 다른 구현으로 교체하거나 감싸는 기법입니다. Wrapture는 이 방식을 테스트용 대체 반환값과 실행 흐름 추적에 함께 활용합니다.
- Observability
- — 프로그램 내부에서 어떤 호출과 데이터 흐름이 발생하는지 외부에서 파악할 수 있게 만드는 특성입니다. Wrapture는 함수 호출을 기록하고 OpenTelemetry와 연결해 기존 Python 프로젝트의 관찰 가능성을 높입니다.
- OpenTelemetry
- — 애플리케이션의 추적 데이터를 수집하고 전달하기 위한 개방형 관측성 표준입니다. 이 글에서는 Wrapture가 함수와 메서드의 실행 정보를 OpenTelemetry 방식으로 다룰 수 있는 연동 수단으로 등장합니다.
- Agentic Engineering
- — AI assistant가 사람의 설계와 지시 아래 프로젝트의 코드와 문서를 생성하는 개발 방식입니다. Graham Dumpleton은 Wrapture 전체를 이 방식으로 만들었지만, 설계와 검증을 사람의 전문 지식으로 통제했다고 구분합니다.
기술
- wrapture
- Python
- OpenTelemetry
- unittest.mock
활용 사례
- 기존 Python 프로젝트에 코드 수정 없이 함수 호출 추적 추가
- 외부 결제 호출을 고정 반환값으로 바꾸는 단위 테스트
- 원래 메서드의 반환 결과 일부만 변환하는 테스트
- JSON Lines 형식으로 실행 흐름 기록
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.