1

일부 자습서를 통해 오이를 배우고 있으며, 내가 어떻게 해야할지 모르는 경우가 있습니다. 의존하는 시나리오를 만들어야합니다. 다른 시나리오 (예를 들어 로그 아웃하기 전에 먼저 로그 아웃해야하는 시나리오를 로그 아웃). 그러면 어떻게해야합니까? 로그 아웃 시나리오 (기능 파일)에서 로그인 단계를 작성해야합니까? 아니면 로그 아웃 시나리오에서 전체 로그인 시나리오를 호출해야합니까?오이, 셀레늄 및 자바를 사용하는 다른 시나리오에 따라 시나리오를 만드는 방법

또한 각 시나리오 전에 드라이버를 설정해야합니까? 각 시나리오가 끝나면 운전수를 종료 하시겠습니까?

+0

각 시나리오에 대한 드라이버를 열지 않고 닫는 방법을 찾고 있다면 - https://github.com/cucumber/cucumber-jvm/blob/master/examples/java-webbit-websockets-selenium/에서 살펴보십시오. src/test/java/cucumber/examples/java/websockets/SharedDriver.java – Grasshopper

답변

0

오이 후크를 살펴보면 전역 파일의 'before'및 'after'단계를 설정할 수 있습니다.이 단계는 기능 파일에서 지정할 필요없이 모든 시나리오에서 실행됩니다.

모든 시나리오에서 실행되기 때문에 각 테스트를 시작할 때 드라이버를 초기화하는 것과 같은 것이 좋습니다. 로그온을 실행하는 데는 적합 할 수 있지만 로그인이 필요하지 않은 시나리오가있는 경우에는 갈 길이 멀습니다. 이는 로그 오프를 수행하고 드라이버를 종료 할 수있는 후 시나리오에도 적용됩니다. 예를 들어 : 내 예에서

/** 
* Before each scenario, initialise webDriver. 
*/ 
@Before 
public void beforeScenario() { 
    this.application.initialiseWebDriver(); 
} 

/** 
* After each scenario, quit the web driver. 
*/ 
@After 
public void afterScenario() { 
    this.log.trace("afterScenario"); 
     this.application.quitBrowser(); 
    } 

, 나는 단순히 이전 시나리오에서 드라이버를 시작하고, 이후에 폐쇄,하지만 이론이 전후 방법이 무엇이든을 포함 할 수있어, 당신은 단지 필요 당신의 단계 정의 클래스에서 그들을 가지고 '@Before'와 '@After'태그로 주석을 달아라.

이 외에도 시나리오에 태그를 추가하여 호출 할 수있는 여러 개의 태그를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

/** 
* Something to do after certain scenarios. 
*/ 
@After("@doAfterMethod") 
public void afterMethod() { 
    this.application.afterThing(); 
} 

단계 정의에서 이와 같은 것을 설정할 수 있으며 표준으로 실행되지 않습니다. 그러나 '@doAfterMethod'로 시나리오에 태그를 지정할 수 있으며 태그가있는 시나리오에 대해 실행되므로 테스트가 끝날 때 필요한 모든 시나리오가 아니라 일반적인 시나리오에 적합합니다. 시나리오가 실행되기 전에 메소드를 실행하면 '@After'가 '@Before'로 변경됩니다.

이들을 사용하는 경우 전 및 후 글로벌 (이 예에서는 드라이버 초기화 및 종료)이 항상 실행되는 첫 번째이자 마지막 항목이며 그 사이의 다른 앞/뒤 부분과 함께 실행된다는 점에 유의하십시오 및 시나리오.

더 읽을 거리 : https://github.com/cucumber/cucumber/wiki/Hooks https://zsoltfabok.com/blog/2012/09/cucumber-jvm-hooks/

0

당신은 qaf bdd과 테스트 의존성을 설정할 수 있습니다. qaf-BDD는 TestNG BDD 구현이므로 시나리오 메타 데이터에 dependsOnMethods 또는 dependsOnGroups을 사용하여 종속성을 TestNG와 동일하게 설정할 수 있습니다.

1

Cucumber-JVM의 다른 시나리오에 의존하는 시나리오를 만들 수 없습니다. 나는 아직도 Cucumber의 Ruby 구현에서 지원된다고 생각한다. 그러나 그것은 위험한 행위입니다. 다른 시나리오에서 시나리오 호출에 대한 지원은 Cucumber의 이후 버전에서 지원되지 않습니다.

그렇다면 기능을 재사용 할 때 어떻게 문제를 해결할 수 있습니까? 로그 아웃에 대해 언급합니다. 많은 시나리오에서 사용자가 상태를 로그 아웃해야 할 때 어떻게 처리합니까? 해결 방법은 사용자가 로그 아웃해야하는 각 단계의 도우미 메서드 또는 도우미 클래스의 기능을 구현하는 것입니다.

이렇게하면 각 시나리오를 다른 모든 시나리오와 독립적으로 사용할 수 있습니다. 이렇게하면 시나리오를 임의의 순서로 실행할 수 있습니다. 나는 시나리오의 실행 순서가 보장된다고 생각하지 않는다. JUnit 러너가 다른 시나리오에 의존하지 않는 습관을 강요하기 위해 무작위 순서로 시나리오를 실행하는 방법에 대해 논의하고 있음을 확실히 알고 있습니다.

다른 질문, 시나리오 이전에 WebDriver를 설정하는 방법과이를 무너 뜨리는 방법은 Cucumber의 Before and After 후크를 사용하여 해결됩니다. JUnit을 사용하는 경우 Before와 After의 JUnit 버전을 가져 오지 않도록주의하십시오.