PYTHON · 테스트
BDD (behave)
행동 주도 개발(BDD)으로 비즈니스 요구사항을 실행 가능한 테스트로 작성합니다.
테스트중급BDDbehaveGiven-When-Then행동
핵심 설명
행동 주도 개발(BDD)으로 비즈니스 요구사항을 실행 가능한 테스트로 작성합니다.
Python code
# BDD 스타일 테스트 프레임워크 시뮬레이션
class BDDTest:
def __init__(self, feature: str):
self.feature = feature
self.context = {}
print(f"Feature: {feature}")
def scenario(self, name: str):
print(f"\n Scenario: {name}")
self.context = {}
return self
def given(self, desc: str, action=None):
print(f" Given {desc}")
if action:
action(self.context)
return self
def when(self, desc: str, action=None):
print(f" When {desc}")
if action:
action(self.context)
return self
def then(self, desc: str, check=None):
print(f" Then {desc}")
if check:
check(self.context)
print(" ✅ 통과")
return self
# 테스트 대상
class Cart:
def __init__(self):
self.items = []
def add(self, item, price):
self.items.append({"item": item, "price": price})
@property
def total(self):
return sum(i["price"] for i in self.items)
# BDD 테스트 실행
test = BDDTest("장바구니 기능")
(test.scenario("상품 추가")
.given("빈 장바구니가 있다",
lambda ctx: ctx.update({"cart": Cart()}))
.when("노트북을 추가한다",
lambda ctx: ctx["cart"].add("노트북", 1500000))
.when("마우스를 추가한다",
lambda ctx: ctx["cart"].add("마우스", 50000))
.then("상품이 2개이다",
lambda ctx: assert_(len(ctx["cart"].items) == 2))
.then("총액은 1,550,000원이다",
lambda ctx: assert_(ctx["cart"].total == 1550000)))
def assert_(condition):
assert condition학습 팁
실제 BDD는 pip install behave로 Gherkin 문법(.feature 파일)을 사용합니다.
주의할 점
BDD 시나리오가 구현 세부사항을 포함하면 리팩토링 시 테스트가 깨집니다. 비즈니스 관점에서 작성하세요.
자주 묻는 질문
BDD (behave)란 무엇인가요?
행동 주도 개발(BDD)으로 비즈니스 요구사항을 실행 가능한 테스트로 작성합니다.
BDD (behave) 학습 시 주의할 점은 무엇인가요?
BDD 시나리오가 구현 세부사항을 포함하면 리팩토링 시 테스트가 깨집니다. 비즈니스 관점에서 작성하세요.
Continue Learning
Python 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.