행동 주도 개발을 연습하기 위해 파이썬에서 사용할 수있는 가장 고급 프레임 워크와 도구는 무엇입니까? 특히 루비에 대한 rspec 및 mocha와 유사한 도구를 찾는 것이 좋습니다.
행동 주도 개발을 연습하기 위해 파이썬에서 사용할 수있는 가장 고급 프레임 워크와 도구는 무엇입니까? 특히 루비에 대한 rspec 및 mocha와 유사한 도구를 찾는 것이 좋습니다.
답변:
Ian Bicking 은 행동 중심 설계에 doctest 를 사용할 것을 권장합니다 .
나는 개인적 으로 행동 중심 디자인 스타일에서 코 와 빈 공간 모의 를 사용하는 경향이 있습니다 . 특히 코용 사양 플러그인 은 BDD에 탁월합니다.
양상추는 파이썬을위한 오이와 같은 도구임을 의미합니다 : http://lettuce.it/
github.com/gabrielfalcao/lettuce에서 소스를 얻을 수 있습니다
정말 행동하는 것이 좋습니다 .
파이썬 용 오이 클론을 찾고, 나는 양상추를 사용하기 시작했지만, 꽤 서툴게 디자인 된 레플리카를 찾았습니다. 매우 Unpythonic.
그런 다음 나는 행동을 발견하고 정말 행복했습니다.
프로그래머가 BDD 및 TDD를 연습 할 수 있도록 개발 된 도구 세트를 사용하는 것이 좋습니다. 이 도구 세트는 pycukes , specloud , ludibrio 및 should-dsl로 구성 됩니다.
Must-DSL 은 RSpec과 유사한 기대치를 제공합니다. RSpec 기대 API로 할 수있는 모든 것, should-dsl 역시 가능합니다. Github 에서 최신 버전을 얻을 수 있습니다 .
SpecLoud는 BDD와 같은 단위 테스트 를 실행하는 데 도움을줍니다. 당신은 그것을 수행하여 설치할 수 있습니다
pip install specloud
Ludibrio 는 테스트 복식 (Mocks, Stubs 및 Dummies)을위한 라이브러리입니다. 통해 설치
pip install ludibrio
그리고 PyCukes 는 BDD의 주요 도구입니다. 시나리오 등을 실행합니다.
pip install pycukes
표현 어설 션에 "sure" 를 사용할 수 있습니다 (RSpec에서와 동일).
Pyccuracy 프로젝트는 Python에서 BDD에 도메인 별 언어를 제공하기위한 노력입니다.
API 수준에서 작동하는 doctest와 달리 웹 페이지로드 및 양식 제출과 같은 고급 작업을 인코딩합니다. 나는 그것을 사용하지 않았지만 그것이 당신이 찾고있는 것이라면 다소 유망 해 보입니다.
pyspecs를 사용해보십시오 . 개발 중에 테스트를 읽기 쉽고 지속적으로 실행하는 것이이 프로젝트를 만드는 데있어 주요 목표 중 하나였습니다.
from pyspecs import given, when, then, and_, the, this
with given.two_operands:
a = 2
b = 3
with when.supplied_to_the_add_function:
total = a + b
with then.the_total_should_be_mathmatically_correct:
the(total).should.equal(5)
with and_.the_total_should_be_greater_than_either_operand:
the(total).should.be_greater_than(a)
the(total).should.be_greater_than(b)
with when.supplied_to_the_subtract_function:
difference = b - a
with then.the_difference_should_be_mathmatically_correct:
the(difference).should.equal(1)
# run_pyspecs.py
| • given two operands
| • when supplied to the add function
| • then the total should be mathmatically correct
| • and the total should be greater than either operand
| • when supplied to the subtract function
| • then the difference should be mathmatically correct
(ok) 6 passed (6 steps, 1 scenarios in 0.0002 seconds)
아마도 요점을 완전히 놓쳤을 수도 있지만 원래 BDD 논문 에서 유지 한 것은 BDD가 모범 사례를 강조하기 위해 TDD로 다시 포장 되었다는 것 입니다.
내 해석이 정확하면 모든 xUnit 구현 에서 메소드 이름을 바꾸면 BDD 프레임 워크를 얻을 수 있습니다 . 계속해서 표준 라이브러리의 unittest를 사용하십시오 .
편집 : 빠른 구글 은 치즈 샵 에서 행동 모듈을 설정했습니다 . BDD에 대한 추가 검색 은 다른 것을 찾지 못했습니다.