Tuesday, July 24, 2018

TestNG කොහොමද Use කරන්නේ ?

අද පාඩම...

TestNG ගැන 


හරි මුලින්ම මොකක්ද මේ TestNG  කියන්නේ ?

TestNG  කියන්නේ Annotation Based  Unit  Testing  Framework  එකක්

මෙන්න මෙහෙමයි..

පහල Screenshot එකේ තියෙන්නේ chrome browser එක Open කරලා https://www.phptravels.net/admin කියන වෙබ් සයිට් එකට ගිහින් එකේ තියෙන ලොගින් එකට ලියපු ටෙස්ට් script එක 

මේකේ පෙන්වා ඇති මම test 4ක් ලියල තියෙනව 




Test  01 - Valid Username  එකයි Valid  Password එකයි  enter කරල ා ලොග් වෙන Test  එක 
Test  02 - Invalid Username  එකයි Invalid Password එකයි  enter කරල ා ලොග් වෙන Test  එක  
Test  03 - Valid Username  එකයි Invalid Password එකයි  enter කරල ා ලොග් වෙන Test  එක  
Test  04 - Invalid Username  එකයි Valid  Password එකයි  enter කරල ා ලොග් වෙන Test  එක  

සාමාන්යෙන් මෙතන මන් ලියල තියෙනවා ලොගින් එකක් ටෙස්ට් කරන්න ඕන  හැම Test  Case  එකක් වගේ

මෙතන තියෙන අවුල තමයි ඔයාලට පෙන්වා ඇති හැම Test Method එකේදිම මම
1. Webdriver Instance එකක් හදන Code එක WebDriver driver;
2. Browser  එක Maximize කරන Code එක driver.manage().window().maximize();
3. Browser එක Open කරන Code එක driver = new ChromeDriver();
4.සයිට් එකට යන Code එක driver.get("https://www.phptravels.net/admin");
5.Browser  එක Close කරන code එක driver.close();

කියන Code line පහ හැම test එකේදිම නැවත නැවත ලියලා තියෙනවා 

මෙන්න මේ හින්ද Code එක ටිකක් ලොකු වෙලා තියෙනවා වගේම code repetition එකත් සිද්ද වෙලා තියෙනවා 

මෙන්න මේ අවුල අකා මකා දමන්නයි Code  එක තව දුරටත් manage කරන්නයි  තමයි අර මම මුලින්ම කිව්ව Annotation Based  Unit  Testing  Framework එක උඅදව්වට එන්නේ 

එක වෙන්නේ මෙහෙමයි 

TestNG  කියන Annotation Based  Unit  Testing  Framework එකේ තියෙනව Annotation කියල ජාතියක් ඒවා තමා 


@Test 
@BeforeSuite
@AfterSuite
@BeforeTest
@AfterTest
@BeforeGroups
@AfterGroups
@BeforeClass
@AfterClass
@BeforeMethod
@AfterMethod


(තව තියෙනවා දැනට මුලිකවම ඕන වෙන ටික විතරක් බලමු )


මෙන්න මේ Annotation Use කරගෙන අපිට පුළුවන් අපේ Code  එකේ මම කලින් කිව්ව code repetition එක අඩු කරගන්න වගේම Code එක Manage කරගන්නත් පුළුවන් වෙනවා 

හරි පලවෙනි එක නම් දැනටම අපි නොදැනුවත්වම Use කරලා තියෙන්නේ @Test මොකක් හරි method එකකට උඩින් @Test  Annotation එක තියෙනවා කියන්නේ ඒ method එක Test method එකක් කියන එක , සාමාන්යෙන් ඔයාල දන්නවා ඇති අපිට java code එකක් run කරන්න ඕන නම් අපිට අනිවාර්යෙන්ම Main Method එකක් තියෙන්න ඕන කියන එක 


public static void main(String[] args) {   
}

එත් ඔයාගේ ඕනෑම method එකට උඩින්  @Test  Annotation එක තියෙනවා නම්  ඒ   method එක ඔයාට Main Method එකක් නැතුව run කරන්න පුළුවන් 

EX - 



මේකෙදි 

public static void main(String[] args) {   
}




කියන Main Method එක නැති උනත් අපිට මේ loginWithValidUsernameAndValidPassword කියන method එක run කරන්න පුළුවන් මොක්දට ඊට උඩින් @Test  Annotation එක තියෙන නිසා 


දෙවෙනි එක විදිහට මම ගන්නේ @BeforeMethod කියන Annotation එක නම දැක්ක ගමන්ම idea එකක් ගන්න පුළුවන් නේ , 

ඒ කියන්නේ මේ Annotation එකට යටින් තියෙන method එකේ තියෙන code එක හැම method එකකට කලින්ම Execute වෙනවා , හරියට නිකන් බත් කන්න කලින් අත් හෝදනවා වගේ 



දැන් තේරෙන්න ඕන වැඩේ @BeforeMethod කියන Annotation එක යටින් තියෙන Code line ටික තමා මුලින්ම Execute වෙන්නේ එහ්මත් නැත්තම් Run වෙන්නේ 

ඒ ටික ඉවර උනාම තමයි  @Test  Annotation එකට යටින් තියෙන Code line ටික  Execute වෙන්නේ

අත හෝදන්නේ 1 දී බත් කන්නේ 2 දී 

ඒ හින්ද 

1. Browser  එක Maximize කරන Code එක driver.manage().window().maximize();
2. Browser එක Open කරන Code එක driver = new ChromeDriver();
3.සයිට් එකට යන Code එක driver.get("https://www.phptravels.net/admin");

කියන code line ඔක්කොම ටික මම ගලවල දැම්ම @BeforeMethod කියන Annotation එක යටින් තියෙන method  එකට ,  දැන් 

1. Browser  එක Maximize කරන Code එක driver.manage().window().maximize();
2. Browser එක Open කරන Code එක driver = new ChromeDriver();
3.සයිට් එකට යන Code එක driver.get("https://www.phptravels.net/admin");

ටික ඔක්කොම @BeforeMethod කියන Annotation එක යටින් තියෙන method  එකේ දී වෙන හින්ද  මම 
@Test  Annotation එකට යටින් තියෙන Code එකෙන් ඒවා ටිකComment  කරලා දැම්ම 

Webdriver Instance එකක් හදන Code එක WebDriver driver;

එක මොකද උඩින්ම දල තියෙන්නේ කියල හිතෙන්න පුළුවන් කාට හරි, එකට හේතුව තමයි Webdriver Instance එක අපි හැම තැනම Use කරන නිසා එක Public  Access කරන්න පුළුවන් Place එකක තිබ්බ ා, එකත් අපි 
@BeforeMethod එක ඇතුලට දැම්මොත් අපිට ඒ Webdriver Instance එක @BeforeMethod එකට පිටින් කිසිම තැනකදී Access කරන්න බැරි වෙනවා , මම කලින් පොස්ට් වල කිව්වා Webdriver Instance නැතුව අපිට click කරන්න Type කරන්න මොකුත් කරන්න බැරි වෙනවා ඒ  හින්දා , හැම ටෙස්ටෙකකටම Access කරන්න පුළුවන් විදිහට ඇනයක් ගහල උඩින්ම තිබ්බා Webdriver Instance එක 


තුන්වෙනි එක විදිහට මම ගන්නේ @AfterMethod කියන Annotation එක කලින් එක බත් කන්න කලින් අත හේදුව එක නම් මේක බත් කවට පස්සේ අත හෝදන එක වෙන්න ඕන 

ඒ කියන්නේ @BeforeMethod එකේ තියෙන ටික වෙලා @Test එකේ තියෙන ටිකත් උනාට පස්සේ තමයි මේ @AfterMethod කියන Annotation එකට යටින් තියෙන Code  Line ටික Execute වෙන්නේ 




දැන් තේරෙන්න ඕන ගොනාට වගේ 

මේක තමා Execution Order එක 

1.BeforeMethod -- කෑමට පෙර අත හේදීම  
2.Test  -- කෑම 
3.AfterMethod -- කෑමට පසු අත හේදීම 

මම @AfterMethod කියන Annotation එකට යටින් දැම්මා  Browser close වෙන එක මොකද Test එක ඉවර උනාම අපිට වෙන්න ඕන Browser එක close වෙන එක නිසා , එහම දාල මම driver .close (); එක Test එක ඇතුලෙන් Comment කරල  දැම්ම

කලින් තිබ්බ  සම්පුර්ණ code එක ඔය විදිහටTestNG  Annotation  දාලා හරිගස්සුවම මෙන්න මෙහෙම දිස් වෙයි 



දැක්ක නේ දැන් අපේ test එක ඇතුලේ තියෙන්නේ test එකට ඕන කරන ඒවා විතරමයි 

Test එකට කලින් වෙන්න ඕන, Browser එක Open කරන එක Site එකට යන එක Browser එක Maximize කරන එක එක තැනක විතරයි තියෙන්නේ මුළු project එකටම ඒ @BeforeMethod එක ඇතුලේ 


Test එක ඉවර උනාම වෙන්න ඕන, Browser එක Close කරන කරන එකත්  එක තැනක විතරයි තියෙන්නේ මුළු project එකටම ඒ @AfterMethod එක ඇතුලේ 

@Test  එක ඇතුලේ තියෙන්නේ අත්තටම Test එකදි වෙන්න ඕන ඒවා ටික විතරයි 

Test එක හරියට ලියලා Public Class  LoginTest () කියන class name එක ගාව තියෙන කොලපාට run icon එක click කරොත් බලාගන්න පුළුවන් කොහොමද code එක run වෙන පිළිවෙල කියලා 

මේ වීඩියෝ එකෙන් බලාගන්න පුළුවන් කොහොමද මේ project එක හදන්නේ කියන එක 





මම මේ Script එකේ Username  සහ Password  එක දන එක කරේ නෑ (ඒ දෙක ඒ වෙලේ අමතක උන හින්ද 😂)

Valid Username - admin@phptravels.com
Valid Password - demoadmin

invalid ඒවා තමන්ට කැමති විදිහට දාගන්න පුළුවන් ඉතින් 

මම කරපු project එක Download කරගන්න පුළුවන් පහල තියෙන ලින්ක් එකෙන් 

https://bitbucket.org/ssluni/testng-annotations/downloads/

දැන් අර මම මුලින් කිව්ව code repetition එක වගේම Code එක Manage කිරීමත් සිද්ද වෙලා තියෙනවා අපේ code එක ඇතුලේ 

අනිත් Annotation ගැන ඒවා Use වෙන වෙලාවට ලස්සනට පැහැදිලි කරන්නම් 

මෙන්න ඔක්කොම Annotation ගැන අදහසක් ගන්න ලින්ක් එකක් 
http://testng.org/doc/documentation-main.html#annotations

මෙන්න TestNG ගැන හොද විස්තරයක්

https://www.guru99.com/all-about-testng-and-selenium.html

අසා සිටිය  ඔබ සැමට ස්තුති...

ඊලග පාඩම Test එකක Result එක Assert කරගන්න විදිහ ගැන





1 comment: