Note| Text in Blue [#PYTHON] and Orange [#JAVA] can be edited or mentioned important for the entire blog. All the posts are practically done by me.
This is the continuation of one my previous topics,
#link. In this method, we are using @dataProvider annotation on TestNG to fetch keywords from a Text file and passing the arguments to Test class. This is our (Prashanth Sams + Karthikeyan) implementation to work with Text file via dataprovider.
Text File | @DataProvider
The below example illustrates on how to work with @dataprovider in-order to fetch values from a text file.
1| Create a Test class file similar to the one given below:
package packagename;
import java.util.HashMap;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class Google {
private WebDriver driver;
@DataProvider(name="keywords")
public Object[][] data() throws Exception {
HashMap<String,String[]> dataSet= new Text2TestData(System.getProperty("user.dir")+"\\config.txt").getData();
String search1Strings[]=dataSet.get("search1");
String search2Strings[]=dataSet.get("search2");
int size =search1Strings.length;
// modify 2 upon the no. of rows; Here, I used two rows, 'search1' & 'search2'
Object[][] creds = new Object[size][2];
for(int i=0;i<size;i++)
{
creds[i][0]=search1Strings[i];
creds[i][1]=search2Strings[i];
}
return creds;
}
@BeforeTest
public void setUp() throws Exception {
driver = new ChromeDriver();
}
@Test(dataProvider = "keywords", description = "Google_Test")
public void search(String search1, String search2) throws Exception {
driver.get("http://www.google.co.in");
// search google via keyword 1
driver.findElement(By.name("q")).clear();
driver.findElement(By.name("q")).sendKeys("" + search1);
driver.findElement(By.name("q")).submit();
Thread.sleep(4000);
// search google via keyword 1
driver.findElement(By.name("q")).clear();
driver.findElement(By.name("q")).sendKeys("" + search2);
driver.findElement(By.name("q")).submit();
Thread.sleep(4000);
}
@AfterTest
public void tearDown() throws Exception {
driver.quit();
}
}
Text2TestData
2| Create another java class file, 'Text2TestData' under the same package.
package packagename;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
public class Text2TestData {
private String fileLocation;
public Text2TestData(String fileLocation) {
this.fileLocation = fileLocation;
}
public HashMap<String,String[]> getData(){
FileInputStream fs;
HashMap<String,String[]> keyValuePair=new HashMap<String,String[]>();
try (BufferedReader br = new BufferedReader(new FileReader(fileLocation))){
String stringLine;
//Read File Line By Line
while ((stringLine = br.readLine()) != null) {
// Print the content on the console
String[] keyValue=stringLine.split("=");
keyValuePair.put(keyValue[0],keyValue[1].split(","));
}
} catch (Exception e) {
e.printStackTrace();
}
return keyValuePair;
}
}
3| Create a text data-source file similar to the contents given below separated with comma (,)
search1=Prashanth Sams,bypasshacker
search2=seleniumworks.com,bypasshacker.blogspot.com
4| Now, place the config.txt file inside your project
5| Save the file and run test :)