Why Not Write All 10 Fields in One Step?
When user fills form with "Hari", "Taraka", "samplemail@gmail.com", "2985725983", "Hyderabad", "Male", "01/01/1990", "Engineer", "Single", "Yes"
Problems:
- Hard to read
- Hard to maintain
- No clarity on which value belongs to which field
- Error-prone if field order changes
=======================================================
#Data Driven:
@facebooklogin
Scenario: Facebook login page
Given user signing into facebook login page
When user login into facebook application
| Hari |
| Taraka |
| samplemail@gmail.com |
| 2985725983 |
Then facebook homepage is displayed
If you run this you will get error, because we are not defined in StepDefiniation file
FAILED: io.cucumber.testng.AbstractTestNGCucumberTests.runScenario("Facebook login page", "Application Login")
Runs Cucumber Scenarios
io.cucumber.testng.UndefinedStepException: The step 'user signing into facebook login page' and 2 other step(s) are undefined.
You can implement these steps using the snippet(s) below:
@When("user login into facebook application")
public void user_login_into_facebook_application(io.cucumber.datatable.DataTable dataTable) {
// Write code here that turns the phrase above into concrete actions
// For automatic transformation, change DataTable to one of
// E, List<E>, List<List<E>>, List<Map<K,V>>, Map<K,V> or
// Map<K, List<V>>. E,K,V must be a String, Integer, Float,
// Double, Byte, Short, Long, BigInteger or BigDecimal.
//
// For other transformations you can register a DataTableType.
throw new io.cucumber.java.PendingException();
}
1. Convert to Map<K, V>
Best for key-value pairs (used for form-like data):
Map<String, String> data = dataTable.asMap();
System.out.println("First Name: " + data.get("FirstName"));
================================COMPLETE CODE=========================================
Feature file:
Feature: Application Login
#Data Driven:
@facebooklogin
Scenario: Facebook login page
Given user signing into facebook login page
When user login into facebook application
| Hari |
| Taraka |
| samplemail@gmail.com |
| 2985725983 |
Then facebook homepage is displayed
StepDefiniation file:
@Given("user signing into facebook login page")
public void user_signing_into_facebook_login_page() {
// Write code here that turns the phrase above into concrete actions
System.out.println("User logging in facebook page");
}
@When("user login into facebook application")
public void user_login_into_facebook_application(List<String> data) {
System.out.println(data.get(0));
System.out.println(data.get(1));
System.out.println(data.get(2));
System.out.println(data.get(3));
}
//Note: It takes a list of strings (data) and prints out user details such as the name and email address.
@Then("facebook homepage is displayed")
public void facebook_homepage_is_displayed() {
System.out.println("facebook homepage is displayed");
System.out.println("=================================================");
}
TestNGRunner file:
package cucumberOptions;
import io.cucumber.testng.AbstractTestNGCucumberTests;
import io.cucumber.testng.CucumberOptions;
@CucumberOptions(features="src/test/java/features", glue ="stepDefinitions", tags= "@facebooklogin", monochrome=true)
public class TestNGRunner extends AbstractTestNGCucumberTests {
}
Output:
User logging in facebook page
Hari
Taraka
samplemail@gmail.com
2985725983
facebook homepage is displayed