Programing

파이썬으로 BDD 연습하기

lottogame 2020. 6. 30. 08:20
반응형

파이썬으로 BDD 연습하기


행동 주도 개발을 연습하기 위해 파이썬에서 사용할 수있는 가장 고급 프레임 워크와 도구는 무엇입니까? 특히 루비에 대한 rspec 및 mocha와 유사한 도구를 찾는 것이 좋습니다.


Ian Bicking 은 행동 중심 설계에 doctest사용할 것을 권장합니다 .

나는 개인적 으로 행동 중심 디자인 스타일에서 빈 공간 모의 를 사용하는 경향이 있습니다 . 특히 코용 사양 플러그인 은 BDD에 탁월합니다.


양상추는 파이썬을위한 오이와 같은 도구라는 것을 의미합니다 : http://lettuce.it/

github.com/gabrielfalcao/lettuce에서 소스를 얻을 수 있습니다


정말 행동하는 것이 좋습니다 .

파이썬 용 오이 클론을 찾고, 나는 양상추를 사용하기 시작했지만 꽤 서툴게 디자인 된 복제품을 발견했습니다. 매우 Unpythonic.

그런 다음 나는 행동을 발견하고 정말 행복했습니다.


프로그래머가 BDD 및 TDD를 수행 할 수 있도록 개발 된 도구 세트를 사용하는 것이 좋습니다. 이 도구 세트는 pycukes , specloud , ludibrioshould-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

반응형