2014-11-25 5 views
2

유사 중첩 상황에 따라 검사 유닛 테스트 파이썬을 구성 :이 RSpec에

공유하는 것은 매우 쉽습니다
describe "a laptop" do 
    before(:each) do 
    end 
    context "progamming" do 
    before(:each) do 
    end 
    it "compiles programs" do 
    end 
    context "with an external monitor" do 
     it "shows editors in multiple displays" do 
     end 
    end 
    end 
    context "video gaming" do 
    before(:each) do 
    end 
    context "with normal graphic card" do 
     before(:each) do 
     end 
     it "can not play League of Legends" do 
     end 
    end 
    context "with expensive graphic card" do 
     before(:each) do 
     end 
     it "can play League of Legends" do 
     end 
    end 
    end 
end 

/그 설정을 건조하고 티어 다운 코드를 중첩 할 때 사용할 수 있으며 컨텍스트 구조를 사용하면 사양 범위를 "생각"하는 데 도움이됩니다. 이 문제를 해결하기 위해 Python unittest 테스트를 작성하는 방법이 궁금합니다. 아니면 철학이 다른 것일까 요?

우리는 inheriting the test class에 의해 비슷한 설정/teardown 코드 공유를 달성 할 수있는 것처럼 보이지만, 여전히 약간의 사소한 문제가 있으며, 서로 다른 클래스에서 분리하는 것은 매우 가독성/유지 보수성이 좋은 구조로 보이지 않습니다. 더 깊은 층.

답변

1

파이썬에서 BDD 프레임 워크를 살펴보십시오.

  1. 행동하라 - http://pythonhosted.org/behave/
  2. 양상추 - http://lettuce.it/intro/overview.html

크게 오이 모델로, RSpec에 최초의 스토리 기반의 프레임 워크이었다 루비의 BDD 프레임 워크.

이 질문에 대한 답변이 확실하지 않은 경우 확실하지 만 유용하게 사용하시기 바랍니다.

Dan North의 블로그를 확인하십시오. 일반적으로 철학과 개발 원칙에 관한 진정한 좋은 자료. http://dannorth.net/

또 다른 측면은 유용 할 것이라고 생각합니다. tdd의 개념은 outside-in과 inside-out appoarch를 사용하는 것입니다. Rspec/BDD, 내가 생각하기에 바깥 쪽 모델. 당신은 내가 정말로 유용하다고 생각하는이 토론을보기 좋게 받아 들일 수있다. https://softwareengineering.stackexchange.com/questions/166409/tdd-outside-in-vs-inside-out

+0

이것은 매우 유용하며 참조에 감사한다! 전에 웹 사이트 통합 테스트를 위해 오이를 시도했지만 제대로 작동했습니다. 예를 들어, 데이터베이스 ORM 모델 및 유틸리티 클래스와 같이 시나리오 기반이 아닌 다른 유형의 항목에이 매개 변수를 사용하는 것은 확실하지 않습니다. 이러한 경우에는 약간 과잉이라고 생각되며 BDD 프레임 워크와 Unittest를 단일 프로젝트에 포함시키는 최적의 솔루션이 아닐 수도 있습니다. 어떤 충고? 감사! – 322896

+0

자동 테스트는 다양한 레벨에서 발생하며 unittest 적용 범위를 가졌다 고해서 Selenium과 같이 통합 테스트 및 기능 테스트를위한 도구도 필요하지는 않습니다. BDD 도구를 사용할시기와 테스트의 구조가 명확한 한, 두 가지 모두 문제가되지 않아야합니다. – Screamer