Monday, July 14, 2014

Constant Variables



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.

4. SignIn_Action class will remain same

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.

No comments:

Post a Comment