문제
행동 중심 개발을 실천하기 위해 Python에 사용할 수있는 가장 진보 된 프레임 워크와 도구는 무엇입니까? 특히 RPEC 및 Mocha for Ruby와 유사한 도구를 찾는 것이 좋을 것입니다.
해결책
Ian Bicking 사용 권장합니다 DocTest 행동 중심 디자인 :
나는 개인적으로 사용하는 경향이 있습니다 코 그리고 voidspace 모의 행동 중심의 디자인 스타일에서. 구체적으로, 사양 플러그인 코는 BDD에 탁월합니다.
다른 팁
양상추는 파이썬을위한 오이와 같은 도구라는 것을 의미합니다. http://lettuce.it/
github.com/gabrielfalcao/lettuce에서 소스를 잡을 수 있습니다
정말 추천합니다 행동하다.
파이썬을위한 오이 클론을 찾고, 나는 양상추를 사용하기 시작했지만 꽤 서투르게 디자인 된 복제본을 발견했습니다. 매우 고르지 않은.
그런 다음 나는 행동을 발견하고 정말로 행복했습니다.
BDD 및 TDD 실습에서 프로그래머를 돕기 위해 개발 된 도구 세트를 사용하는 것이 좋습니다. 이 도구 세트는 다음과 같이 구성됩니다. Pycukes, Specloud, 루디 브리오 그리고 dsl.
dsl RSPEC와 같은 기대를 줄 것입니다. RSPEC 기대 사항 API로 할 수있는 모든 일도해야합니다. 당신은 그것을 잡을 수 있습니다 Github의 최신 버전.
Specloud BDD와 같은 유닛 테스트를 실행하는 데 도움이됩니다. 당신은 그것을 통해 그것을 설치할 수 있습니다
pip install specloud
루디 브리오 테스트 복식 (모의, 스터브 및 인형)을위한 라이브러리입니다. 그것을 통해 설치하십시오
pip install ludibrio
그리고 Pycukes BDD의 주요 도구입니다. 시나리오 등을 실행합니다. 다시, 다시,
pip install pycukes
자세한 내용은 도구 문서를 읽으십시오 pypi.
당신이 사용할 수있는 "확실한" 표현적인 주장 (RSPEC에서와 마찬가지로)
Pyccuracy 프로젝트는 Python에서 BDD에 도메인 별 언어를 제공하기위한 노력입니다.
API 수준에서 작동하는 DocTest와 달리 웹 페이지로드 및 양식을 제출하는 것과 같은 높은 수준의 작업을 인코딩합니다. 나는 그것을 사용하지 않았지만 그것이 당신이 찾고있는 것이라면 다소 유망한 것처럼 보입니다.
좋아요 pyccuracy 많이. 요즘 중간 크기의 프로젝트에서 구현하고 있습니다.
시험해보십시오 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)