Test data can be
of two types, fixed or variable. If it is fixed, we can easily hard code the
test data in to our test scripts. But sometimes the fixed test data is also
used in so many scripts and if it gets changed then it is a huge task to update
the entire effected test scripts for example the URL of your test application.
It remains same but once you shifted to other environment, you need to change
it in all of your test scripts. We can easily place the URL in Text file or
Excel file outside our test scripts but Java gives us special feature of
creating Constants variables which works exactly the same as Environment and
Global variable in QTP.
1. Create a ‘New Package‘
file and name it as “utility“, by
right click on the Project and select New > Package.
2. Create a ‘New Class‘file,
by right click on the above created Package and select New > Class and
name it as Constant.
3. Assign keywords in this class to your fixed data
for e.g. Url, Username and Password.
package utility;
public class Constant {
public static final String URL = "url of the
application";
public static final String Username = "testuser@gmail.com";
public static final String Password = "Test@123";
}
Constants
Variables are declared as public static,
so that they can be called in any other methods without instantiate
the class.
Constant
Variables are declared as final,
so that they cannot be changed during the execution.
package appModule;
import org.openqa.selenium.WebDriver;
import
pageObject.Login_Page;
public class SignIn_Action{
// Pass Arguments (Username
and Password) as string
public static void Execute(WebDriver
driver,String sUserName, String sPassword){
Login_Page.txtbx_UserName(driver).sendKeys(sUserName);
Login_Page.txtbx_Password(driver).sendKeys(sPassword);
Login_Page.btn_Login(driver).click();
}
}
5. Create a New Class and name it as Global_Var_TC
by right click on the ‘automationFramework‘
Package and select New > Class.
We will be creating all our test cases under this package.
Now
pass your Constant
Variables (URL, Username and Password) as arguments
to your Execute
method of SignIn_Action
class in your Global_Var_TC test case.
package automationFramework;
import
java.util.concurrent.TimeUnit;
import
org.openqa.selenium.WebDriver;
import
org.openqa.selenium.firefox.FirefoxDriver;
import
pageObject.Home_Page;
import utility.Constant;
import
appModule.SignIn_Action;
public class Global_var_TC {
private static WebDriver driver = null;
public static void main(String[] args)
{
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10,
TimeUnit.SECONDS);
driver.get(Constant.URL);
driver.manage().window().maximize();
// Use your Module
SignIn now
SignIn_Action.Execute(driver,Constant.Username,Constant.Password);
System.out.println(" Login
Successfully.");
Home_Page.lnk_LogOut(driver).click();
driver.quit();
}
}You will notice that once you type ‘Constant’ and the moment you press dot, all the variables in the Constant class will be displayed. We can expose variables in order to reduce duplicated code. We are able to call these Constant variables multiple times. This will ensure a better maintainable test code, because we only have to make adjustments in one particular place.
When the test data is not fixed or if the same test script can be executed with the large amount of test data, we use external files for test data.