2013-09-27 2 views
4

나는이 많은 R & D 일을했지만 솔루션을 찾을 수 없습니다.시나리오 간의 세션을 유지하고 behat과 밍크의 단일 기능 파일에

단일 기능 파일에서 여러 시나리오 간의 로그인 세션을 유지해야합니다. 나는 I am logged in 함수를 만들었고 나는 백그라운드로 썼다. 그래서 모든 시나리오가 시작될 때 로그인이 발생합니다. 하지만 내가 원하는 것은 시나리오 전체에서 단일 로그인 세션을 유지하는 것입니다. 누구든지 제안 할 수 있습니다.?

예제 코드는 다음과 같습니다 다른 사람이 내 코드를 리뷰

Feature: To test the output 

Background: 
    Given I am logged in 

@javascript 
Scenario: To test the positive input 
    When I fill in "test" with "aab" 
    And I press "add" 
    Then I should see "welcome" 

@javascript 
    Scenario:To test the negative inputs 
    When I fill in "test" with "@#[email protected]!!111" 
    And I press "add" 
    Then I should see "Sorry,invalid input please try again" 

이제 경우 그는 긍정적이고 부정적인 테스트 사례에 대해 알고 올 것입니다. 하지만 시나리오가 다시로드 될 때마다 기능에 50 개의 시나리오가있는 경우 어떻게됩니까? 더 큰 프로젝트. 그것은 내가 로그인 한 모든 시나리오를 잘 보이지 않으며 total.what에서 추가 15 분을 낭비합니다. 하나의 기능 파일에 모든 시나리오가 끝난 후에 테스트가 동일한 로그인 세션으로 계속됩니다.

+0

각 시나리오에서 '로그인'하지 않거나 시나리오간에 종속성이 있습니까? –

+0

문제를 설명하거나 재현하는 데 필요한 최소한의 코드를 게시 할 수 있습니까? 또한 시나리오 사이에 브라우저를 닫기 위해'After' 훅을 사용하고 있습니까? – orde

+0

@PaulMorie : 필자의 테스트 시간을 저장하고 기능 파일의 모든 시나리오가 부정적인 입력 양수 입력 등을 가질 수있는 특정 기능과 관련되어 있으므로 각각의 경우마다 로그인 할 때마다 속도가 느려지므로 성능. –

답변

3

할 수 없습니다. Behat 시나리오는 목적에 따라 독립적입니다. 그렇지 않으면 상태가에서 다른 시나리오로 유출 될 위험이 있습니다.

올바른 방향에서 문제가 해결되지 않습니다. 속도 향상을위한 시나리오 분리를 희생하면 장기적으로 당신을 해칠 것입니다.

로그인이 기능 중 하나로 테스트되었다고 가정하고 로그인이 필요한 다른 시나리오에서는 실제 로그인 양식을 사용할 필요가 없습니다. 그것을 programaticaly 생각하십시오.

또한 기능 테스트를 위해 Behat을 사용하는 것처럼 보일뿐 아니라 비즈니스 기대치를 검증하기위한 빌드입니다. 직접 Mink을 사용하면 더 많은 힘을 줄 수 있습니다.