2012-06-11 3 views
6

저는 SpecFlow를 처음 사용하고 있으며 다른 역할 유형의 인증 된 사용자를위한 다양한 테스트 기능/시나리오를 설정하고 있습니다. 나는 Coypu와 브라우저 자동화를 통해 이것을하고있다.시나리오 실행을위한 배경에 해당합니다.

그래서이 역할 유형의 사용자 로그인을 설정하는 백그라운드 단계가 있습니다. 기능에서 각 시나리오 후

Background: 
    Given I am logged in as a ...some role I'm interested in... 

, 나는 밖으로 사용자를 다시 기록 할 (그렇지 않으면 배경의 단계에서 로그는 다음 시나리오에 대해 작동하지 않습니다 - 나는 같은 코이 푸 브라우저 인스턴스를 유지하고있어 테스트 사이에 열림).

내가 사용할 수있는 [AfterScenario] 주석을 찾았으나 모든 기능의 모든 시나리오에서 범위가 정해져 있으므로 (이해하는 한 ...) 인증되지 않은 사용자에게 시나리오에 영향을 미칩니다.

내가 [AfterScenario]으로 범위를 지정할 수 있다고 생각하지만믿을 수는 있지만 테스트 할 기능의 전후에 로그인/로그 아웃해야 할 것으로 예상됩니다.이 모든 것을 지정하는 데 열중하지 않습니다. 수많은 마법의 끈으로.

그래서 내가 Feature 파일에 넣을 수있는 것이 있는지 궁금합니다. 배경과 동등하지만, 이후에 을 실행해야합니다. (아니면 각 시나리오에 대해 로그인/로그 아웃하는 것이 최선의 방법이 아닙니까?)

답변

10

specflow에는 "Postground"기능이 없지만 tags filtering과 비슷한 것을 얻을 수 있습니다.

대부분의 프로젝트에서 태그는 특정 설정/해제 논리를 갖는 시나리오를 표시하는 데 사용됩니다. 그래서 코드에서 당신은 하나의 마법 문자열을해야합니다

@authentication 
Feature: Some feature requires authentication 

@authentication 
Scenario: Some scenario requires authentication 

: 그런 다음 우리는 논리를 실행하기 위해 BeforeScenario/AfterScenario 후크를 사용 :

[BeforeScenario("authentication")] 
public void BeforeAuthenticationScenario() 
{ 
    //... 
}  

[AfterScenario("authentication")] 
public void AfterAuthenticationScenario() 
{ 
    //... 
} 

을 그리고 당신은 각각의 시나리오 또는 전체 기능을 태그를 추가 할 수 있습니다 "인증"기능을 사용하면 태그와 함께 선언적으로 사용자 정의 로직을 적용 할 수 있습니다.

+0

감사합니다. 좋은 방법 인 것 같습니다. 당신의 관심사에서, "포스트 그라운드"같은 것이 유용한 기능이 될 것입니까, 아니면 존재하지 않는 이유가 있다고 생각합니까? – ngm

+1

A는 실제로 그것에 대해 생각해 보지 않았지만 태그를 사용하여 코드에서 수행 할 수있을 때까지는 큰 문제가 아닙니다. SpecFlow의 새로운 기능에 대한 논의가 진행 중이며, 다른 단계에서 빌드 된 임의의 단계를 지원합니다. 시나리오의 게시 및 전제 조건을 그룹화 할 수있는 경우 이에 대한 논의가 진행됩니다. – nemesv

관련 문제