0% found this document useful (0 votes)
63 views64 pages

Test NG Cheat Sheet

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
63 views64 pages

Test NG Cheat Sheet

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 64

package com.sauceDemo.

TestClasses;

import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class TestNGRun


{
@AfterMethod
public void closeBrowser()
{
System.out.println("Complete logout and
browser is closed");
}
@Test
void verifyLogin()
{
System.out.println("Login is verified");
}

@BeforeMethod
public void openBrowser()
{
System.out.println("Browser is opened and URL
is opened");
}

}
Verify Login Functionality
package com.sauceDemo.TestClasses;
import java.time.Duration;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.sauceDemo.POMClasses.LoginPageClass;
public class TC01VerifyLoginFunctioanlity
{
WebDriver driver;
@BeforeMethod
public void setUpMethod()
{
System.setProperty("webdriver.chrome.driver",
"D:\\Back-up Data\\Desktop-Backup\\Pavan Velo\\Automation
Batch Material\\Downloads\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(20));
driver.manage().window().maximize();
driver.get("https://www.saucedemo.com/");
LoginPageClass login = new LoginPageClass(driver);
login.sendUsername();
login.sendPassword();
login.clickLoginButton();
}

@Test
public void verityLogin()
{
String actalTitle = "Swag Labs";
String expectedTitle = driver.getTitle();
if(expectedTitle.equals(actalTitle))
{
System.out.println("Login test is passed");
}
else
{
System.out.println("Login test is failed");
}
}
@AfterMethod
public void tearDown()
{
driver.close();
}
}

TestNG Program for annotations

@BeforeSuite
public void beforeSuiteMethod()
{
System.out.println("before suite");
}
@BeforeTest
public void beforeTestMethod()
{
System.out.println("before test");
}
@BeforeClass
public void beforeClassMethod()
{
System.out.println("before class");
}
@BeforeMethod
public void beforeMethod()
{
System.out.println("before method");
}
@Test
public void testMethod()
{
System.out.println("In a test case");
}
@Test
public void testMethod1()
{
System.out.println("In a test case");
}
@AfterMethod
public void afterMethod()
{
System.out.println("after method");
}
@AfterClass
public void afterClassMethod()
{
System.out.println("after class");
}
@AfterTest
public void afterTestMethod()
{
System.out.println("after test");
}
@AfterSuite
public void afterSuiteMethod()
{
System.out.println("after suite");
}
package testGPackage1Demo;

import org.testng.Assert;

import org.testng.annotations.Test;

import org.testng.asserts.Assertion;

public class Keywords2

@Test

public void methodLogin()

String actualTitle = "Swag Labs";


String expectedTitle = "Labs";

Assert.assertEquals(actualTitle, expectedTitle,"title not matched");

String actualURL = "URL1";

String expectedURL = "URL1";

Assert.assertEquals(actualURL, expectedURL,"URL not matched");

@Test

public void methodLogOut()

Assert.assertTrue(true);

}
Program1

package testGPackage1Demo;

import org.testng.annotations.Test;

public class TestNGKeywordsPRogram


{
@Test(priority=-1)
public void methodA()
{
System.out.println("methodA");
}
@Test(invocationCount=2,priority=0)
public void methodB()
{
System.out.println("methodB");
}

@Test(priority=1)
public void methodC()
{
System.out.println("methodC");
}

@Test(enabled = false)
public void methodD()
{
System.out.println("methodD");
}

@Test
public void methodE()
{
System.out.println("methodE");
}
}

Program2

package testGPackage1Demo;

import org.testng.Assert;
import org.testng.annotations.Test;
import org.testng.asserts.Assertion;

public class Keywords2


{
@Test
public void methodA()
{
System.out.println("methodA");
Assert.assertFalse(true);
}

@Test(dependsOnMethods={"methodA"})
public void methodB()
{
System.out.println("methodB");
}

@Test(priority=0)
public void methodC()
{
System.out.println("methodC");
}

@Test
public void methodD()
{
System.out.println("methodD");
}

@Test
public void methodE()
{
System.out.println("methodE");
}
}
timeOut keyword
package testGPackage1Demo;
import org.testng.Assert;
import org.testng.annotations.Test;

public class TestNGKeywordsPRogram


{
@Test
public void aMethod()
{
System.out.println("methodA");
// Assert.assertFalse(true);
}
@Test(timeOut=2000)
public void bMethod() throws InterruptedException
{
System.out.println("methodB");
Thread.sleep(5000);
}

@Test
public void cMethod()
{
System.out.println("methodC");
}

@Test
public void dMethod()
{
System.out.println("methodD");
}

@Test
public void eMethod()
{
System.out.println("methodE");
}
}

How to configure the pom.xml file?


Steps
1. Open pom.xml file

2. Before </project> end  add <dependencies> opening


and </dependencies> closing tag as follows.
3. Under this <dependencies> tag  add <dependencies>
as per the libraries requirements.

4.How to add dependency for each library such as


selenium webdriver for selenium, TestNg for test
classes, Apache library for excel etc.
A. Search on google  maven repository
B. And go to  https://mvnrepository.com/
C.Over there search required library for such as

 selenium webdriver –for selenium


 TestNG for eclipse

D.Find the latest and stable version (refer max


used version by users)
E.After clicking on it copy the Maven code and
paste it in the pom.xml file of our project
and do the same for rest of the dependencies
and paste it there.

F.After adding all the dependencies save pom.xml


file and give some time (3-4 min) to configure
those libraries to project.
G.And after some time that libraries will be get
configured to the project and we can see those
and also execute the require code now.

TestNG-Suite
BaseClass-
package com.sauceDemo.TestClasses;
import java.util.concurrent.TimeUnit;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Parameters;
import com.sauceDemo.POMClasses.LoginPageClass;

public class BaseClass1


{
WebDriver driver;
LoginPageClass login;

@Parameters("browserName")
@BeforeMethod
public void setUp(String browserName)
{
if(browserName.equals("chrome"))
{

System.setProperty("webdriver.chrome.driver",
"D:\\Back-up Data\\Desktop-
Backup\\Pavan Velo\\Automation Batch
Material\\Downloads\\chromedriver_win32\\chromedriver
.exe");

driver = new ChromeDriver();


}
else if(browserName.equals("firefox"))
{

System.setProperty("webdriver.gecko.driver",
"D:\\Back-up Data\\Desktop-
Backup\\Pavan Velo\\Automation Batch
Material\\Downloads\\chromedriver_win32\\geckodriver.
exe");

driver = new FirefoxDriver();


}
else
{
//
System.setProperty("webdriver.chrome.driver",
// "D:\\Back-up Data\\Desktop-
Backup\\Pavan Velo\\Automation Batch
Material\\Downloads\\chromedriver_win32\\geckodriver.
exe");

// driver = new FirefoxDriver();

}
driver.manage().timeouts().implicitlyWait(30,Time
Unit.SECONDS);
driver.manage().window().maximize();
driver.get("https://www.saucedemo.com/");

login = new LoginPageClass(driver);


login.sendUsername();
login.sendPassword();
login.clickLoginButton();

@AfterMethod
public void tearDown()
{
driver.quit();
}

}
TC-01
package com.sauceDemo.TestClasses;
import java.time.Duration;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.sauceDemo.POMClasses.LoginPageClass;

public class TC01VerifyLoginFunctioanlity extends BaseClass1


{
@Test
public void verifyLogin()
{
String actalTitle = "Swag Labs";
String expectedTitle = driver.getTitle();
if(expectedTitle.equals(actalTitle))
{
System.out.println("Login test is passed");
}
else
{
System.out.println("Login test is failed");
}
}
}

TC02-
package com.sauceDemo.TestClasses;
import java.time.Duration;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;

import com.sauceDemo.POMClasses.HomePageClass;
import com.sauceDemo.POMClasses.LoginPageClass;

public class TC02VerifyLogoutFunctionality extends BaseClass1


{
HomePageClass home;

// System.setProperty("webdriver.chrome.driver",
// "D:\\Back-up Data\\Desktop-
Backup\\Pavan Velo\\Automation Batch
Material\\Downloads\\chromedriver_win32\\chromedriver.e
xe");
//
// WebDriver driver = new ChromeDriver();
//
driver.manage().timeouts().implicitlyWait(30,TimeUnit.S
ECONDS);
// driver.manage().window().maximize();
// driver.get("https://www.saucedemo.com/");

@Test
public void verifyLogout()
{
home = new HomePageClass(driver);
home.clickSettingButton();
home.clickLogoutButton();
String actualTitle = "Swag Labs";
String expectedTItle = driver.getTitle();
if(actualTitle.equals(expectedTItle))
{
System.out.println("logout test is
passed");
}
else
{System.out.println("logout test is failed");
}
}
}

TC03-
package com.sauceDemo.TestClasses;

import java.time.Duration;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;

import com.sauceDemo.POMClasses.HomePageClass;
import com.sauceDemo.POMClasses.LoginPageClass;

public class TC03VerifyAddtoCartFunctionality extends


BaseClass1
{

HomePageClass home;

// System.setProperty("webdriver.chrome.driver",
// "D:\\Back-up Data\\Desktop-
Backup\\Pavan Velo\\Automation Batch
Material\\Downloads\\chromedriver_win32\\chromedriver.e
xe");
//
// WebDriver driver = new ChromeDriver();
//
driver.manage().timeouts().implicitlyWait(30,TimeUnit.S
ECONDS);
// driver.manage().window().maximize();
// driver.get("https://www.saucedemo.com/");

@Test
public void verifyAddtoCart()
{
home = new HomePageClass(driver);
home.clickAddtoCart();

System.out.println("products are added to cart");

Folder structure should be like below-


How to generate logs in the project??
1. Add the dependency of log4j in pom.xml file(version-1.2.14)
2. Right click on project  New  File
3. Give file name as “log4j.properties” always. And then click on finish.
4. It will be visible in the project
5. Open it  and copy the below code in it and save it.

#Set level
log4j.rootCategory=debug, console, file

# Appender which writes to console


log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{MM-DD-YYYY
HH:mm:ss} %F %-5p [%t] %c{2} %L - %m%n

# Appender which writes to a file


log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=application.log

# Defining maximum size of a log file


log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ISO8601} %5p [%t]
%c{1}:%L - %m%n
log4j.appender.file.Append=true

6. In base class(in pre-conditions i.e. in @BeforeClass or @BeforeMethod as


per your pre-set conditions)

Logger log = Logger.getLogger("MPP");

PropertyConfigurator.configure("log4j.properties");
7. And after adding above code in base class  use “info” method of Logger
class as followsEx.
log.info(“username is entered”);

Use this info method whenever to each and every step of your program
script. And save the class file and run it.

8. After running class/suite  refresh the project  automatically one log


file will be present in the project with “application.log” name.
9. This files contains the logs of your application which are used to track the
activity of your project.

10.With the help of this logs developers/testers can easily track the
application activity.
11.Use  As a tester we need to send this file to developers as proof of
submission for the bug which we locked if some functionality fails
12. package com.sauceDemo.POMClasses;
13.
14. import java.util.List;
15.
16. import org.openqa.selenium.WebDriver;
17. import org.openqa.selenium.WebElement;
18. import org.openqa.selenium.support.FindBy;
19. import org.openqa.selenium.support.PageFactory;
20.
21. public class HomePageClass
22. {
23. private WebDriver driver;
24.
25.
26. @FindBy(xpath="//button[@id='react-burger-menu-btn']")
27. private WebElement settingButton;
28.
29. @FindBy(xpath="//a[@id='logout_sidebar_link']")
30. private WebElement logOutButton;
31.
32. //add to cart webelements
33. @FindBy(xpath="//div//button")
34. private List<WebElement> addToCart;
35.
36. public HomePageClass(WebDriver driver)
37. {
38. this.driver = driver;
39. PageFactory.initElements(driver, this);
40. }
41.
42. public void clickSettingButton()
43. {
44. settingButton.click();
45. }
46.
47. public void clickLogoutButton()
48. {
49. logOutButton.click();
50. }
51.
52. public void clickAddtoCart()
53. {
54. for(int i=2; i<8; i++)
55. {
56. addToCart.get(i).click();
57. }
58. }
59.
60. }
61. package com.sauceDemo.POMClasses;
62.
63. import java.util.List;
64.
65. import org.openqa.selenium.WebDriver;
66. import org.openqa.selenium.WebElement;
67. import org.openqa.selenium.interactions.Actions;
68. import org.openqa.selenium.support.FindBy;
69. import org.openqa.selenium.support.PageFactory;
70.
71. public class LoginPageClass
72. {
73. // 1. WebDriver driver global initialize
74. private WebDriver driver;
75. Actions act;
76.
77.
78. //2. Will find the webelement
79.
80. @FindBy(xpath="//input[@id='user-name']")
81. private WebElement username;
82.
83. @FindBy(xpath="//input[@id='password']")
84. private WebElement password;
85.
86. @FindBy(xpath="//input[@id='login-button']")
87. private WebElement loginButton;
88.
89.
90. //3.Create constructor
91. public LoginPageClass(WebDriver driver)
92. {
93. //4. Assign local var to global var
94. this.driver = driver;
95. //5. calling the method of pagefactory
96. PageFactory.initElements(driver, this);
97.
98. // act = new Actions(driver);
99. }
100.
101. // 6. Create methods to do the actions on elements
102.
103. public void sendUsername()
104. {
105. username.sendKeys("standard_user");
106. }
107.
108. public void sendPassword()
109. {
110. password.sendKeys("secret_sauce");
111. }
112.
113. public void clickLoginButton()
114. {
115. loginButton.click();
116. // act.click(loginButton).perform(); //mouse action method
117.
118. }
119. }
120. package com.sauceDemo.TestClasses;
121.
122. import java.util.concurrent.TimeUnit;
123.
124. import org.apache.log4j.Logger;
125. import org.apache.log4j.PropertyConfigurator;
126. import org.openqa.selenium.WebDriver;
127. import org.openqa.selenium.chrome.ChromeDriver;
128. import org.openqa.selenium.firefox.FirefoxDriver;
129. import org.testng.annotations.AfterMethod;
130. import org.testng.annotations.BeforeMethod;
131. import org.testng.annotations.Parameters;
132.
133. import com.sauceDemo.POMClasses.LoginPageClass;
134.
135. public class BaseClass1
136. {
137. WebDriver driver;
138. LoginPageClass login;
139.
140. Logger log;
141.
142. @Parameters("browserName")
143. @BeforeMethod
144. public void setUp(String browserName)
145. {
146. if(browserName.equals("chrome"))
147. {
148. System.setProperty("webdriver.chrome.driver",
149. "D:\\Back-up Data\\Desktop-
Backup\\Pavan Velo\\Automation Batch
Material\\Downloads\\chromedriver_win32\\chromedriver.exe");
150.
151. driver = new ChromeDriver();
152. }
153. else if(browserName.equals("firefox"))
154. {
155. System.setProperty("webdriver.gecko.driver",
156. "D:\\Back-up Data\\Desktop-
Backup\\Pavan Velo\\Automation Batch
Material\\Downloads\\chromedriver_win32\\geckodriver.exe");
157.
158. driver = new FirefoxDriver();
159. }
160. else
161. {
162. // System.setProperty("webdriver.chrome.driver",
163. // "D:\\Back-up Data\\Desktop-Backup\\Pavan
Velo\\Automation Batch
Material\\Downloads\\chromedriver_win32\\geckodriver.exe");
164.
165. // driver = new FirefoxDriver();
166.
167. }
168.
169. log = Logger.getLogger("MPP");
170. PropertyConfigurator.configure("log4j.properties");
171.
172. driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
173. driver.manage().window().maximize();
174. driver.get("https://www.saucedemo.com/");
175. log.info("URl is opened");
176.
177.
178. login = new LoginPageClass(driver);
179. login.sendUsername();
180. log.info("username entered");
181. login.sendPassword();
182. log.info("password entered");
183. login.clickLoginButton();
184. log.info("clicked on login button");
185.
186. }
187.
188. @AfterMethod
189. public void tearDown()
190. {
191. driver.quit();
192. }
193.
194. }
195. package com.sauceDemo.TestClasses;
196.
197. import java.time.Duration;
198. import java.util.concurrent.TimeUnit;
199.
200. import org.openqa.selenium.WebDriver;
201. import org.openqa.selenium.chrome.ChromeDriver;
202. import org.testng.Assert;
203. import org.testng.Reporter;
204. import org.testng.annotations.AfterMethod;
205. import org.testng.annotations.BeforeMethod;
206. import org.testng.annotations.Test;
207.
208. import com.sauceDemo.POMClasses.LoginPageClass;
209.
210. public class TC01VerifyLoginFunctioanlity extends BaseClass1
211. {
212.
213.
214.
215. @Test
216. public void verifyLogin()
217. {
218. String actalTitle = "Swag Labs";
219. String expectedTitle = "Swag Labs";
220.
221. Assert.assertEquals(actalTitle, expectedTitle);
222. Reporter.log("login test case is passed");
223.
224. //log
225. log.info("Login test executed");
226.
227. }
228. }
229. package com.sauceDemo.TestClasses;
230.
231. import java.time.Duration;
232. import java.util.concurrent.TimeUnit;
233.
234. import org.openqa.selenium.WebDriver;
235. import org.openqa.selenium.chrome.ChromeDriver;
236. import org.testng.Assert;
237. import org.testng.Reporter;
238. import org.testng.annotations.Test;
239.
240. import com.sauceDemo.POMClasses.HomePageClass;
241. import com.sauceDemo.POMClasses.LoginPageClass;
242.
243. public class TC02VerifyLogoutFunctionality extends BaseClass1
244. {
245.
246. HomePageClass home;
247.
248. // System.setProperty("webdriver.chrome.driver",
249. // "D:\\Back-up Data\\Desktop-Backup\\Pavan
Velo\\Automation Batch
Material\\Downloads\\chromedriver_win32\\chromedriver.exe");
250. //
251. // WebDriver driver = new ChromeDriver();
252. // driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
253. // driver.manage().window().maximize();
254. // driver.get("https://www.saucedemo.com/");
255.
256. @Test
257. public void verifyLogout()
258. {
259.
260. home = new HomePageClass(driver);
261. home.clickSettingButton();
262. home.clickLogoutButton();
263.
264. // String actualTitle = "Swag Labs";
265. // String expectedTItle = driver.getTitle();
266. //
267. String actalTitle = "Swag Labs";
268. String expectedTitle = "Swag Labs";
269.
270. Assert.assertEquals(actalTitle, expectedTitle);
271. Reporter.log("log out test case is passed");
272.
273. log.info("Logout test executed");
274. }
275.
276.
277.
278.
279. }
280. package com.sauceDemo.TestClasses;
281.
282. import java.time.Duration;
283. import java.util.concurrent.TimeUnit;
284.
285. import org.openqa.selenium.WebDriver;
286. import org.openqa.selenium.chrome.ChromeDriver;
287. import org.testng.Assert;
288. import org.testng.Reporter;
289. import org.testng.annotations.Test;
290.
291. import com.sauceDemo.POMClasses.HomePageClass;
292. import com.sauceDemo.POMClasses.LoginPageClass;
293.
294. public class TC03VerifyAddtoCartFunctionality extends BaseClass1
295. {
296.
297. HomePageClass home;
298.
299. // System.setProperty("webdriver.chrome.driver",
300. // "D:\\Back-up Data\\Desktop-Backup\\Pavan
Velo\\Automation Batch
Material\\Downloads\\chromedriver_win32\\chromedriver.exe");
301. //
302. // WebDriver driver = new ChromeDriver();
303. // driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
304. // driver.manage().window().maximize();
305. // driver.get("https://www.saucedemo.com/");
306.
307. @Test
308. public void verifyAddtoCart()
309. {
310. home = new HomePageClass(driver);
311. home.clickAddtoCart();
312.
313. Assert.assertTrue(false);
314.
315. Reporter.log("products are added to cart");
316.
317. log.info("add to cart test executed");
318.
319. }
320.
321. <project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema
-instance"
xsi:schemaLocation="http://maven.apache.org
/POM/4.0.0
https://maven.apache.org/xsd/maven-
4.0.0.xsd">
322. <modelVersion>4.0.0</modelVersion>
323. <groupId>MPP</groupId>
324. <artifactId>MPP</artifactId>
325. <version>0.0.1-SNAPSHOT</version>
326. <dependencies>
327. <!--
https://mvnrepository.com/artifact/org.sele
niumhq.selenium/selenium-java -->
328. <dependency>
329.
<groupId>org.seleniumhq.selenium</groupId>
330. <artifactId>selenium-
java</artifactId>
331. <version>3.14.0</version>
332. </dependency>
333. <!--
https://mvnrepository.com/artifact/org.test
ng/testng -->
334. <dependency>
335. <groupId>org.testng</groupId>
336. <artifactId>testng</artifactId>
337. <version>6.14.3</version>
338. <scope>test</scope>
339. </dependency>
340. <!--
https://mvnrepository.com/artifact/log4j/lo
g4j -->
341. <dependency>
342. <groupId>log4j</groupId>
343. <artifactId>log4j</artifactId>
344. <version>1.2.14</version>
345. </dependency>
346.
347. </dependencies>
348. </project>
349. <?xml version="1.0" encoding="UTF-8"?>
350. <!DOCTYPE suite SYSTEM
"https://testng.org/testng-1.0.dtd">
351. <suite name="Suite">
352. <test thread-count="3"
name="ChromeTest">
353. <parameter name ="browserName" value
="chrome"> </parameter>
354. <classes>
355. <class
name="com.sauceDemo.TestClasses.TC03VerifyA
ddtoCartFunctionality"/>
356. <class
name="com.sauceDemo.TestClasses.TC01VerifyL
oginFunctioanlity"/>
357. <class
name="com.sauceDemo.TestClasses.TC02VerifyL
ogoutFunctionality"/>
358. </classes>
359. </test> <!-- Test -->
360. </suite> <!-- Suite -->
361.

362.

You might also like