IT용어위키


Behave (파이썬)

behave는 파이썬(Python) 언어에서 행동 주도 개발(BDD, Behavior-Driven Development)을 구현하기 위해 사용되는 오픈소스 테스트 프레임워크이다. 이 도구는 Cucumber 스타일의 시나리오 언어인 Gherkin 문법을 사용하여, 사람이 읽을 수 있는 형식으로 소프트웨어의 기대 동작을 기술하고 자동화할 수 있도록 돕는다.

개요

behave는 Python 기반 프로젝트에서 BDD를 적용할 수 있도록 설계되었으며, .feature 파일을 기반으로 한 시나리오와 각 시나리오를 실제로 실행하는 스텝 함수(step definitions)를 분리하여 관리한다. Gherkin 문법으로 작성된 시나리오를 Python 코드와 연결함으로써, 테스트가 요구사항 명세의 역할을 수행하게 한다.

주요 특징

  • Gherkin 문법 지원 (Feature, Scenario, Given, When, Then, And, But 등)
  • .feature 파일 기반의 시나리오 작성
  • Python 함수로 Step Definition 작성
  • 명확한 디렉터리 구조와 실행 CLI 제공
  • 테스트와 문서를 하나의 형태로 결합할 수 있음

디렉터리 구조

behave 프로젝트의 기본 디렉터리 구조는 다음과 같다:

project/
  features/
    example.feature
    steps/
      example_steps.py
    environment.py
  • `features/`: 모든 시나리오 파일과 설정 파일의 루트 디렉터리
  • `steps/`: 시나리오 내 단계에 대응하는 Python 함수들을 정의
  • `environment.py`: 테스트 실행 전후의 설정 및 훅(hook) 정의 파일

예시

.feature 시나리오 파일

Feature: 로그인 기능

  Scenario: 올바른 사용자 정보로 로그인 성공
    Given 사용자 "admin" 이 존재한다
    When 사용자가 "admin" 으로 로그인 시도한다
    Then 로그인에 성공해야 한다

steps 정의 (example_steps.py)

from behave import given, when, then

@given('사용자 "{username}" 이 존재한다')
def step_given_user_exists(context, username):
    context.user = username

@when('사용자가 "{username}" 으로 로그인 시도한다')
def step_when_login(context, username):
    context.login_result = (username == "admin")

@then('로그인에 성공해야 한다')
def step_then_login_success(context):
    assert context.login_result is True

환경 설정 (environment.py)

behave는 테스트 실행의 다양한 단계에서 사용자 정의 동작을 수행할 수 있도록 여러 훅(hook) 함수를 제공한다. 이러한 훅은 `features/environment.py` 파일에 정의되며, 다음과 같은 기능에 활용된다:

  • 테스트 전체에 걸친 설정 또는 리소스 초기화
  • 시나리오별 전처리 및 후처리 작업
  • 공통 테스트 상태 설정, 외부 서비스 연동 등
def before_all(context):
    print("전체 테스트 시작")

def after_all(context):
    print("전체 테스트 종료")

def before_scenario(context, scenario):
    print(f"시나리오 시작: {scenario.name}")

def after_scenario(context, scenario):
    print(f"시나리오 종료: {scenario.name}")

Cucumber와의 관계

behave는 공식 Cucumber 프로젝트의 일부는 아니지만, Cucumber와 동일한 Gherkin 문법을 사용하며, 기능과 개발 흐름 또한 유사하다. Ruby, Java 등에서 사용되는 Cucumber 도구와는 독립적인 Python 기반 구현체로, Python 환경에서 BDD를 적용하기 위한 표준 도구로 널리 사용된다.

설치 방법

pip 명령어로 간단히 설치할 수 있다:

pip install behave

비교 및 관련 도구

Python 생태계의 BDD 프레임워크 비교

도구 언어 기반 Gherkin 문법 pytest 호환 특징
behave Python 지원 아님 가장 널리 사용되는 표준 Python BDD 프레임워크
lettuce Python 지원 아님 경량 도구이나 업데이트가 느림
pytest-bdd Python 지원 pytest에 통합 가능한 BDD 확장

다른 구성 도구와의 관계

behave는 별도 에이전트를 요구하지 않는 에이전트리스(agentless) 테스트 도구이다. 따라서 Ansible 등과 마찬가지로 대상 시스템에 별도 설치가 필요 없는 간편한 구조를 갖는다.

같이 보기

각주


  출처: IT위키 (IT위키에서 최신 문서 보기)

  * 본 페이지는 IT Wiki에서 미러링된 페이지입니다. 일부 오류나 표현의 누락이 있을 수 있습니다. 원본 문서는 IT Wiki에서 확인하세요!