파이썬으로 BDD 연습하기
행동 주도 개발을 연습하기 위해 파이썬에서 사용할 수있는 가장 고급 프레임 워크와 도구는 무엇입니까? 특히 루비에 대한 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
자세한 내용은 PyPi 의 도구 설명서를 참조하십시오 .
훌륭한 게시물과 답변. 그냥 포함하도록 갱신에 원 을 상쾌을 내가 중단 pycukes을 읽으면서이 목록에. Freshen과 함께 BDD와 Django를 사용하는 것에 대한 좋은 게시물이 여기 있습니다 .
표현 어설 션에 "sure" 를 사용할 수 있습니다 (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)
아마도 요점을 완전히 놓쳤을 수도 있지만 원래 BDD 논문 에서 유지 한 것은 BDD가 모범 사례를 강조하기 위해 TDD로 다시 포장 되었다는 것 입니다.
If my interpretation is correct, you can get a BDD framework just by renaming methods around in any xUnit implementation. So just go ahead and use the standard library's unittest.
EDIT: A quick google turned up a Behaviour module in the Cheese Shop. Further searching for BDD there did not find anything else.
참고URL : https://stackoverflow.com/questions/231371/practicing-bdd-with-python
'Programing' 카테고리의 다른 글
자바 로깅 vs Log4J (0) | 2020.06.30 |
---|---|
AngularJS에 뷰 / 부분 특정 스타일을 포함하는 방법 (0) | 2020.06.30 |
C ++에서 클래스를 직렬화 및 역 직렬화 할 수 있습니까? (0) | 2020.06.30 |
Google Code Subversion 저장소를 GitHub에 포크 및 동기화 (0) | 2020.06.30 |
WordPress에서는 어떤 유형의 해시를 사용합니까? (0) | 2020.06.30 |