BDD
Framework, HOOKs in Cucumber:
Global
Hooks
Use @Before for common steps running before the
actual test ,ie, precondition.
Use @After for common steps running after the actual
test, ie, post condition.
@Before and @After are global hooks.
Example:
Let’s take a feature file:
Note: You can create 1 test case and parameterize
with example. Three test cases are creates just to show, three different test
cases are run in this.
@sprint7
Feature: Sprint7
@finance
Scenario Outline: TestCase1
#Precondition:User is on the
facebook page. After execution, close the session.
And Enter "<uid_ColumnName>" and
"<pwd_ColumnName>" and click login
Then Validate screen
Examples:
| uid_ColumnName | pwd_ColumnName |
| realuid1 | realpwd1 |
@humanResource
Scenario Outline: TestCase2
#Precondition:User is on the
facebook page. After execution, close the session.
And Enter "<uid_ColumnName>" and
"<pwd_ColumnName>" and click login
Then Validate screen
Examples:
| uid_ColumnName | pwd_ColumnName |
| realuid2 | realpwd2 |
@marketing
Scenario Outline: TestCase3
#Precondition:User is on the
facebook page. After execution, close the session.
And Enter "<uid_ColumnName>" and
"<pwd_ColumnName>" and click login
Then Validate screen
Examples:
| uid_ColumnName | pwd_ColumnName |
| realuid3 | realpwd3 |
Step Definition:
package stepDefinition;
import
org.openqa.selenium.By;
import
org.openqa.selenium.WebDriver;
import
org.openqa.selenium.chrome.ChromeDriver;
import
cucumber.api.java.After;
import
cucumber.api.java.Before;
import
cucumber.api.java.en.And;
import
cucumber.api.java.en.Then;
public class
StepDefinitionClass {
WebDriver
driver;
@Before
public void
OpenBrowserOpenfacebook() throws Throwable {
System.setProperty("webdriver.chrome.driver",
"C:\\Path\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://facebook.com/");
}
@After
public void Close_Session()
{
driver.quit();
}
@And("^Enter \"([^\"]*)\"
and \"([^\"]*)\" and click login$")
public void
Enter_and_and_click_login(String userID, String password) throws Throwable {
driver.findElement(By.xpath("//input[@id='email']")).sendKeys(userID);
driver.findElement(By.xpath("//input[@id='pass']")).sendKeys(password);
driver.findElement(By.xpath("//input[@type='submit']")).click();
}
@Then("^Validate
screen$")
public void
Validate_screen() throws Throwable {
System.out.println("Screenshot
taken");
Thread.sleep(5000);
}
}
Test Runner :
package testrunner;
import
org.junit.runner.RunWith;
import
cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(
features="\\Users\\Badri\\Documents\\Selenium\\CucumberTest\\features\\featureFile.feature",
glue={"stepDefinition"},
format={"pretty"},
monochrome=true
)
public class TestRunner {
}
Tagged
Hooks
Hooks
for particular testcase or testcases
Feature
file:
@sprint7
Feature: Sprint7
@finance
Scenario Outline: TestCase1
#Precondition:User is on the
facebook page. After execution, close the session.
And Enter "<uid_ColumnName>" and
"<pwd_ColumnName>" and click login
Then Validate screen
Examples:
| uid_ColumnName | pwd_ColumnName |
| realuid1 |
realpwd1 |
@humanResource
Scenario: TestCase2 #Outline should
be added here to use example
#Hooks: Global Precondition:User
is on the facebook page. After execution, close the session.
#Tagged Hooks:Precondition for
this test case: User is on forgot pwd page
#Tagged Hooks: Click serach is
post condition.
And Enter
mobile number
@marketing
Scenario Outline: TestCase3 #Outline should
be added here to use example
#Precondition:User is on the
facebook page. After execution, close the session.
And Enter "<uid_ColumnName>" and
"<pwd_ColumnName>" and click login
Then Validate screen
Examples:
| uid_ColumnName | pwd_ColumnName |
| realuid3 | realpwd3 |
Step Definition:
package stepDefinition;
import
org.openqa.selenium.By;
import
org.openqa.selenium.WebDriver;
import
org.openqa.selenium.chrome.ChromeDriver;
import
cucumber.api.java.After;
import
cucumber.api.java.Before;
import
cucumber.api.java.en.And;
import cucumber.api.java.en.Then;
public class
StepDefinitionClass {
WebDriver
driver;
@Before
public void
OpenBrowserOpenfacebook() throws Throwable {
System.setProperty("webdriver.chrome.driver",
"C:\\Users\\Badri\\Documents\\Selenium\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://facebook.com/");
}
@After
public void Close_Session()
{
driver.quit();
}
@Before("@humanResource")//Tagged Hooks
public void
fogotPassword(){
driver.findElement(By.xpath("//a[text()='Forgot
account?']")).click();
}
@After("@humanResource")//Tagged Hooks
public void clickSearch() {
driver.findElement(By.xpath("//input[@value='Search']")).click();
}
@And("^Enter
mobile number$")
public void enterMobile() throws Throwable {
driver.findElement(By.xpath("//input[@id='identify_email']")).sendKeys("123456");
}
@And("^Enter
\"([^\"]*)\" and \"([^\"]*)\" and click
login$")
public void
Enter_and_and_click_login(String userID, String password) throws Throwable {
driver.findElement(By.xpath("//input[@id='email']")).sendKeys(userID);
driver.findElement(By.xpath("//input[@id='pass']")).sendKeys(password);
driver.findElement(By.xpath("//input[@type='submit']")).click();
}
@Then("^Validate
screen$")
public void
Validate_screen() throws Throwable {
System.out.println("Screenshot
taken");
Thread.sleep(5000);
}
}
Test Runner:
package testrunner;
import
org.junit.runner.RunWith;
import
cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(
features="\\Users\\path\\features\\featureFile.feature",
glue={"stepDefinition"},
format={"pretty"},
monochrome=true
)
public class TestRunner {
}
We can add priority to Hooks:
@Before(order=0)
@After(order=0)
@Before(order=1)
@After(order=1)
We can add priority to Hooks:
@Before(order=0)
@After(order=0)
@Before(order=1)
@After(order=1)
No comments:
Post a Comment