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 කරගන්න විදිහ ගැන
waiting for your next post :D
ReplyDelete