рд╕реЗрд▓реЗрдирд┐рдпрдо рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд▓рд┐рдП рдЯреЗрд╕реНрдЯрдПрдирдЬреА рдПрдиреЛрдЯреЗрд╢рди рдЧрд╛рдЗрдб

рд╢рд╛рдВрддрд┐, рд╢реНрд░рдо, рдордИ, рдЦрд╛рдмрд░реЛрд╡рд╕реНрдХ рдирд┐рд╡рд╛рд╕реА! рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬреЛ рд╣рдорд╛рд░реА рддрд░рд╣, рдЗрдВрдЯрд░-рд╣реЙрд▓рд┐рдбреЗ рд╡рд░реНрдХрд╡реЗрдХ рдореЗрдВ рдлрдЯ рдЧрдП, рд╣рдордиреЗ рдПрдХ рдЕрдиреБрд╡рд╛рдж рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЬрд╛рд╡рд╛ рдХреНрдпреВрдП рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреЛрд░реНрд╕ рдХреЗ рд▓рд┐рдП рднрд░реНрддреА рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬреЛ 28 рдордИ рдХреЛ рд▓реЙрдиреНрдЪ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред



TestNG, C├йdric Beust рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдврд╛рдБрдЪрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рд╣рдорд╛рд░реА рдХрдИ рдкрд░реАрдХреНрд╖рдг рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред TestNG рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ NG рдХрд╛ рдорддрд▓рдм рдХреНрдпрд╛ рд╣реИ? рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ "рдЕрдЧрд▓реА рдкреАрдврд╝реА" ред TestNG JUnit рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ рдЬрдм рдпрд╣ рдЖрдкрдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИред рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╣рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рд╕рдВрд░рдЪрд┐рдд рдмрдирд╛рдиреЗ рдФрд░ рдмреЗрд╣рддрд░ рд╕рддреНрдпрд╛рдкрди рдмрд┐рдВрджреБ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИред

TestNG рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЬреЛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ:

  • рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рд╡рд┐рд╡рд┐рдз рдПрдиреЛрдЯреЗрд╢рдиред
  • рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдирд╛ред
  • рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдкрд░, TestNG.xml рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рд▓рдЪреАрд▓рд╛рдкрдиред
  • рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХрд╛ рд╕рдореВрд╣рди рдФрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ред
  • рдПрдЪрдЯреАрдПрдордПрд▓ рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдХреА рдкреАрдврд╝реА, рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрдХреВрд▓рдиред
  • рдкрд░реАрдХреНрд╖рдг рдирд┐рд╖реНрдкрд╛рджрди рд▓реЙрдЧ рдХреА рдкреАрдврд╝реАред
  • рдЧреНрд░рд╣рдг, рдорд╛рд╡реЗрди, рдЬреЗрдирдХрд┐рдВрд╕, рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рди рдПрдХреАрдХрд░рдг

рдЖрдорддреМрд░ рдкрд░, TestNG рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:



рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рд▓рд┐рдП TestNG рдПрдиреЛрдЯреЗрд╢рди рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо TestNG рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддреЗрдВ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддреЗрдВ:

  • рдЬрд╛рд╡рд╛ рд╡рд┐рдХрд╛рд╕ рдХрд┐рдЯ
  • рдЧреНрд░рд╣рдг рдпрд╛ рдЕрдиреНрдп рдХреЛрдИ рдЖрдИрдбреАрдИ
  • рдЧреНрд░рд╣рдг рдореЗрдВ рдпрд╛ рдЕрдкрдиреЗ IDE рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд TestNG

рдиреЛрдЯ: рдЬрд╛рд╡рд╛ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЬрд╛рд╡рд╛ рд╕рдВрд╕реНрдХрд░рдг 1.5 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк TestNG рдХреЗ рд▓рд┐рдП рдирдП рд╣реИрдВ, рддреЛ TestNG рдХреЗ рд╕рд╛рде рдкрд╣рд▓реА рд╕реНрд╡рдЪрд╛рд▓рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рджреЗрдЦреЗрдВред

рддреЛ рдПрдХ рдПрдиреЛрдЯреЗрд╢рди рдХреНрдпрд╛ рд╣реИ?

рдПрдиреЛрдЯреЗрд╢рди рдПрдХ рд▓реЗрдмрд▓ рд╣реИ рдЬреЛ рдПрдХ рд╡рд░реНрдЧ рдпрд╛ рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ ( рдЕрдиреБрд╡рд╛рджрдХ рдХрд╛ рдиреЛрдЯ: рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдХреЗрд╡рд▓ рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЕрдиреНрдп рддрддреНрд╡реЛрдВ рдкрд░ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ )ред рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП, рдЙрдкрд╕рд░реНрдЧ "@" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред TestNG рдПрдХ рдордЬрдмреВрдд рдкрд░реАрдХреНрд╖рдг рд░реВрдкрд░реЗрдЦрд╛ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдП, рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ TestNG рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рджреЗрдЦреЗрдВред


@Test

рдпрд╣ TestNG рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдПрдиреЛрдЯреЗрд╢рди рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдореБрдЦреНрдп рддрд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИ ред рд╕рднреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдлрд╝рдВрдХреНрд╢рди @Test рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рд╡рд┐рдзрд┐ рдореЗрдВ рд╣реИрдВред рдЗрд╕рдХреА рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд╕рд╛рде рд╡рд┐рдзрд┐ рд▓реЙрдиреНрдЪ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдирдореВрдирд╛ рдХреЛрдб url рд╕рдВрдХреНрд░рдордг рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ:

 @Test public void testCurrentUrl() throws InterruptedException { driver.findElement(By.xpath("//*[@id='app']/header/aside/ul/li[4]/a")) .click(); String currentUrl = driver.getCurrentUrl(); assertEquals( currentUrl, "https://automation.lambdatest.com/timeline/?viewType=build&page=1", "url did not matched"); } 

@BeforeTest

рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдзрд┐ рдкрд╣рд▓реЗ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдЪрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЪрд▓рд╛рдИ рдЬрд╛рддреА рд╣реИ @Test рдЯрд┐рдкреНрдкрдгреАред (рдЕрдиреБрд╡рд╛рджрдХ рдХрд╛ рдиреЛрдЯ: xml рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ test рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ) ред рдЖрдк рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рд╕рд╛рде рдЯреЗрд╕реНрдЯрдиреЗрдЯ рдореЗрдВ рдЗрд╕ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдкреВрд░реНрдг рд╕реНрдХреНрд░реАрди рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░реЗрдВ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗрдЯ рдХрд░реЗрдВ, рдЖрджрд┐ред

рдиреАрдЪреЗ FirstTest рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреВрд░реНрдг рд╕реНрдХреНрд░реАрди рдкрд░ рдлреИрд▓рддрд╛ рд╣реИ:

 @BeforeTest public void profileSetup() { driver.manage().window().maximize(); } 

@AfterTest

рдЗрд╕ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рддрд░реАрдХреЗ рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рднреА @Test рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рдж рдЪрд▓рддреЗ рд╣реИрдВред ( рдЕрдиреБрд╡рд╛рджрдХ рдХрд╛ рдиреЛрдЯ: xml рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ test рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, "рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдЧ" рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ )ред рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧреА рдПрдиреЛрдЯреЗрд╢рди рд╣реИ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред рдЖрдк рдЗрд╕ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдЗрдЪреНрдЫреБрдХ рдкрд╛рд░реНрдЯрд┐рдпреЛрдВ рдХреЛ рдИрдореЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:

 @AfterTest public void reportReady() { System.out.println("Report is ready to be shared, with screenshots of tests"); } 

@BeforeMethod

рдЗрд╕ рдПрдиреЛрдЯреЗрд╢рди рд╡рд╛рд▓реА рд╡рд┐рдзрд┐рдпрд╛рдБ рдкреНрд░рддреНрдпреЗрдХ @Test рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╣рд▓реЗ рдЪрд▓рд╛рдИ рдЬрд╛рддреА рд╣реИрдВ ред рдЖрдк рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд▓реЙрдЧрд┐рди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг, рдпрд╣рд╛рдБ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдбрд╛рд▓ рджрд┐рдпрд╛ред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реИрдореНрдмреНрдбрд╛рдЯреЗрд╕реНрдЯ рд▓реЙрдЧрд┐рди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рд╣реИ:

 @BeforeMethod public void checkLogin() { driver.get("https://accounts.lambdatest.com/login"); driver.findElement(By.xpath("//input[@name='email']")).sendKeys("sadhvisingh24@gmail.com"); driver.findElement(By.xpath("//input[@name='password']")).sendKeys("activa9049"); driver.findElement(By.xpath("//*[@id='app']/section/form/div/div/button")).click(); } 

@AfterMethod

рдЗрд╕ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рддрд░реАрдХреЗ рдкреНрд░рддреНрдпреЗрдХ @Test рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рдж рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ ред рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВ рддреЛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЗрд╕ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓реЗрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХрд╛ рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:

 @AfterMethod public void screenShot() throws IOException { TakesScreenshot scr = ((TakesScreenshot) driver); File file1 = scr.getScreenshotAs(OutputType.FILE); FileUtils.copyFile(file1, new File(":\\test-output\\test1.PNG")); } 

@BeforeClass

рдЗрд╕ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдзрд┐ рдореМрдЬреВрджрд╛ рдХрдХреНрд╖рд╛ рдореЗрдВ рдкрд╣рд▓реЗ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдЧреАред рдЖрдк рдЗрд╕ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЧреБрдгреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ, рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ, рдЗрдЪреНрдЫрд┐рдд URL рдХреЗ рд╕рд╛рде рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреЛрд▓рдиреЗ, рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд╣рд▓реЗ рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛ рдХреЛрдб:

 @BeforeClass public void appSetup() { driver.get(url); } 

@AfterClass

рдЗрд╕ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдзрд┐ рдореМрдЬреВрджрд╛ рдХрдХреНрд╖рд╛ рдореЗрдВ рдЕрдВрддрд┐рдо рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдЧреАред TestNG рдореЗрдВ рдЗрд╕ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░реАрдХреНрд╖рдг рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдЖрджрд┐ред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдмрдВрдж рджрд┐рдЦрд╛рддрд╛ рд╣реИ:

 @AfterClass public void closeUp() { driver.close(); } 

@BeforeSuite

рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ (рд╕реБрдЗрдЯ) рдореЗрдВ рдХрдИ рдХрдХреНрд╖рд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдпрд╣ рдПрдиреЛрдЯреЗрд╢рди рд╕рднреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рддрд░реАрдХреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдиреЛрдЯреЗрд╢рди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИред TestNG рдореЗрдВ @BeforeSuite рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рд╕реЗрд▓реЗрдирд┐рдпрдо рдпрд╛ рд░рд┐рдореЛрдЯ рд╡реЗрдм рдбреНрд░рд╛рдпрд╡рд░ рдЪрд▓рд╛рдирд╛ рдФрд░ рдЪрд▓рд╛рдирд╛ рдЖрджрд┐ред
рдПрдХ рдЙрджрд╛рд╣рд░рдг @BeforeSuite рдПрдиреЛрдЯреЗрд╢рди TestNG рдореЗрдВ рдбреНрд░рд╛рдЗрд╡рд░ рд╕реЗрдЯрдЕрдк рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ:

 @BeforeSuite public void setUp() { System.setProperty( "webdriver.chrome.driver", ":\\selenium\\chromedriver.exe"); driver = new ChromeDriver(); } 

@AfterSuite

TestNG рдореЗрдВ рдпрд╣ рдПрдиреЛрдЯреЗрд╢рди рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдХрдИ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдЖрджрд┐ред
рдиреАрдЪреЗ рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рд▓рд┐рдП TestNG рдореЗрдВ @AfterSuite рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рд╣реИ:

 @AfterSuite public void cleanUp() { System.out.println("All close up activities completed"); } 

@BeforeGroups

TestNG @Test рдПрдиреЛрдЯреЗрд╢рди рдореЗрдВ рд╕рдореВрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдореВрд╣ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдмрдВрдзрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рд╕рдорд╛рди рдХрд╛рд░реНрдп рдЖрдкрд╕ рдореЗрдВ рд╕рдВрдпреБрдХреНрдд рд╣реЛрдВ, рддреЛ рдЖрдк рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдбреИрд╢рдмреЛрд░реНрдб (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреИрдирд▓), рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ (рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓), рд▓реЗрдирджреЗрди (рд▓реЗрдирджреЗрди) рдФрд░ рдЬреИрд╕реЗ, рдПрдХ рд╕рдореВрд╣ рдореЗрдВ, рдЬреИрд╕реЗ рдХрд┐ user_managementред TestNG рдореЗрдВ @BeforeGroups рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрд░реАрдХреНрд╖рдг рд╕рдореВрд╣ рдХреЗ рд╕рд╛рдордиреЗ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рд╕рдореВрд╣ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред @BeforeGroup рдореЗрдВ рдПрдХ рд▓реЙрдЧрд┐рди рдлрд╝рдВрдХреНрд╢рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рд╕рдореВрд╣ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреИрдирд▓, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЖрджрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ред

@BeforeGroups рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

 @BeforeGroups("urlValidation") public void setUpSecurity() { System.out.println("url validation test starting"); } 

@AfterGroups

рдпрд╣ рдПрдиреЛрдЯреЗрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдореВрд╣ рдХреЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рд▓рд┐рдП TestNG рдореЗрдВ @AfterGroups рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛ рдХреЛрдб:

 @AfterGroups("urlValidation") public void tearDownSecurity() { System.out.println("url validation test finished"); } 

рдЙрджрд╛рд╣рд░рдг

рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ:

 import org.apache.commons.io.FileUtils; import org.openqa.selenium.By; import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.*; import java.io.File; import java.io.IOException; import java.util.concurrent.TimeUnit; import static org.testng.Assert.assertEquals; public class AnnotationsTestNG { private WebDriver driver; private String url = "https://www.lambdatest.com/"; @BeforeSuite public void setUp() { System.setProperty( "webdriver.chrome.driver", ":\\selenium\\chromedriver.exe"); driver = new ChromeDriver(); driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); System.out.println("The setup process is completed"); } @BeforeTest public void profileSetup() { driver.manage().window().maximize(); System.out.println("The profile setup process is completed"); } @BeforeClass public void appSetup() { driver.get(url); System.out.println("The app setup process is completed"); } @BeforeMethod public void checkLogin() { driver.get("https://accounts.lambdatest.com/login"); driver.findElement(By.xpath("//input[@name='email']")).sendKeys("sadhvisingh24@gmail.com"); driver.findElement(By.xpath("//input[@name='password']")).sendKeys("activa9049"); driver.findElement(By.xpath("//*[@id='app']/section/form/div/div/button")).click(); System.out.println("The login process on lamdatest is completed"); } @Test(groups = "urlValidation") public void testCurrentUrl() throws InterruptedException { driver.findElement(By.xpath("//*[@id='app']/header/aside/ul/li[4]/a")).click(); Thread.sleep(6000); String currentUrl = driver.getCurrentUrl(); assertEquals(currentUrl, "https://automation.lambdatest.com/timeline/?viewType=build&page=1", "url did not matched"); System.out.println("The url validation test is completed"); } @AfterMethod public void screenShot() throws IOException { TakesScreenshot scr = ((TakesScreenshot) driver); File file1 = scr.getScreenshotAs(OutputType.FILE); FileUtils.copyFile(file1, new File(":\\test-output\\test1.PNG")); System.out.println("Screenshot of the test is taken"); } @AfterClass public void closeUp() { driver.close(); System.out.println("The close_up process is completed"); } @AfterTest public void reportReady() { System.out.println("Report is ready to be shared, with screenshots of tests"); } @AfterSuite public void cleanUp() { System.out.println("All close up activities completed"); } @BeforeGroups("urlValidation") public void setUpSecurity() { System.out.println("url validation test starting"); } @AfterGroups("urlValidation") public void tearDownSecurity() { System.out.println("url validation test finished"); } } 

TestNG рд░рд┐рдкреЛрд░реНрдЯ:



рдХрдВрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ:



рдЕрдиреБрд╡рд╛рджрдХ рдиреЛрдЯ:

  • рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реЗрдЯрдЕрдк () рд╡рд┐рдзрд┐ рдореЗрдВ chromedriver.exe рдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рдмрджрд▓реЗрдВ, рдФрд░ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ () рд╡рд┐рдзрд┐ рдореЗрдВ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд▓рд┐рдП рдкрдеред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдлрд▓ рдкрд░реАрдХреНрд╖рдг рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП, CheckLogin () рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рдкреНрд░рдпреБрдХреНрдд рдорд╛рд╡реЗрди рдирд┐рд░реНрднрд░рддрд╛рдПрдБ:

 <dependencies> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.14.3</version> <scope>test</scope> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-chrome-driver</artifactId> <version>3.141.59</version> <scope>test</scope> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> <scope>test</scope> </dependency> </dependencies> 
рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рд▓рд┐рдП TestNG рдПрдиреЛрдЯреЗрд╢рди рдЕрдиреБрдХреНрд░рдо

рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдПрдиреЛрдЯреЗрд╢рди рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдирд┐рдореНрди рдХреНрд░рдо рдореЗрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:

  • BeforeSuite
  • BeforeTest
  • BeforeClass
  • BeforeGroups
  • BeforeMethod
  • рдХрд╕реМрдЯреА
  • AfterMethod
  • AfterGroups
  • AfterClass
  • AfterTest
  • AfterSuite

рдпрд╣рд╛рдБ рдЙрдирдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдХреНрд░рдо рд╣реИ:



TestNG рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ

TestNG рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдореЗрдВ рд╡реЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЗ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреНрд░рдо рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред

рдпреЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ:

  • рд╡рд┐рд╡рд░рдг : рдЖрдк рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд┐рд╡рд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
    рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, @Test рдкрд░реАрдХреНрд╖рдг (рд╡рд┐рд╡рд░рдг = "рдпрд╣ рдкрд░реАрдХреНрд╖рдг рд▓реЙрдЧрд┐рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ")ред
  • рд╣рдореЗрд╢рд╛ : рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдХреЛ рд╣рдореЗрд╢рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рднрд▓реЗ рд╣реА рдЬрд┐рди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рдпрд╣ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЙрдиреНрд╣реЗрдВ рдЧрд┐рд░рд╛ рджрд┐рдпрд╛ рдЬрд╛рдПред рдЬрдм рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рди рд╕рддреНрдп рд╣реИ, рддреЛ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдЪрд▓реЗрдЧреАред
    рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, @Test (alwaysRun = true)ред
  • dataProvider : рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдирд╛рдо рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдХрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдбреЗрдЯрд╛рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдореЗрдВ, рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рдЗрд╕рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдзрд┐ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рд╛рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдХрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЗрдирдкреБрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
    рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, @Test (рдбреЗрдЯрд╛рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ = "рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░-рдкрд░реАрдХреНрд╖рдг")ред
  • рдирд┐рд░реНрднрд░рдСрдирдореЗрдереЛрдбреНрд╕ : рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рдХреНрд░рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдХреЗрд╡рд▓ рддрднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдЬрд┐рд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рд╕рдлрд▓ рд╣реИред рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рдЬрд┐рд╕ рд╡рд┐рдзрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдЧрд┐рд░рддрд╛ рд╣реИ, рддреЛ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
    рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, @Test (depenOnmethod = "рд▓реЙрдЧрд┐рди")ред
  • рд╕рдореВрд╣ : рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдПрдХ рд╕рдореВрд╣ рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
    рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, @Test (рд╕рдореВрд╣ = "рднреБрдЧрддрд╛рди_рдореЙрдбрд▓")ред
    рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЖрдкрдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рд╣реИрдВред рдЬрдм рдЖрдк рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХреБрдЫ рд╕рдореВрд╣реЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХреЗрд╡рд▓ рдХреБрдЫ рд╕рдореВрд╣ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдХреЗрд╡рд▓ TestNG.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕рдореВрд╣реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред include рдЯреИрдЧ рдореЗрдВ, рдЙрди рд╕рдореВрд╣реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЙрд╕ exclude рдЯреИрдЧ рдореЗрдВ рдЬрд┐рд╕реЗ рдЖрдк рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
  • рдирд┐рд░реНрднрд░рдСрдирдЧреНрд░реБрдкреНрд╕ : рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рджреЛ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдореВрд╣ рдкрд░ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдореВрд╣ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдпрд╣ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рд╢реБрд░реВ рдХреА рдЬрд╛рдПрдЧреАред
    рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, @Test (depenOnMethods = "Payment_Module")ред
  • рдкреНрд░рд╛рдердорд┐рдХрддрд╛ : рд╣рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИред рдЬрдм TestNG рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЪрд▓рд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЗрд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд░рдо рдореЗрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдРрд╕реЗ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдЬрд╣рд╛рдВ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдг рд╕рд╣реА рдХреНрд░рдо рдореЗрдВ рдЪрд▓реЗрдВ, рдЖрдк рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ 0. рдкрд╣рд▓реЗ рд╣реИ, рдкрд░реАрдХреНрд╖рдг рдХрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред
    рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, @Test (рдкреНрд░рд╛рдердорд┐рдХрддрд╛ = 1), @Test (рдкреНрд░рд╛рдердорд┐рдХрддрд╛ = реи)ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдХреЗ рдмрд░рд╛рдмрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдлрд┐рд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЛ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  • рд╕рдХреНрд╖рдо : рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕реЗ рдЭреВрдареЗ рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИред
    рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, @Test (рд╕рдХреНрд╖рдо = рдЧрд▓рдд)ред
  • рдЯрд╛рдЗрдордЖрдЙрдЯ : рд╡рд╣ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдкреВрд░рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рдирд┐рд╖реНрдкрд╛рджрди рд╡рд┐рд╢реЗрд╖рддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдордп рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдкрд░реАрдХреНрд╖рдг рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред org.testng.internal.thread.ThreadTimeoutException
    рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, @Test (timeOut = 500)ред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рдордп рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред
  • рдордВрдЧрд▓рд╛рдЪрд░рдг : рдПрдХ рдкрд╛рд╢ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдг рдЖрд╣реНрд╡рд╛рди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рдмрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓реЗрдЧрд╛ред
    рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, @Test ( @Test = 5) 5 рдмрд╛рд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  • рдордВрдЧрд▓рд╛рдЪрд░рдг : рдЙрдкрд░реНрдпреБрдХреНрдд рдЖрд╣реНрд╡рд╛рди рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдореВрд▓реНрдп InvocationCount рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдордВрдЧрд▓рд╛рдЪрд░рдг рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рдмрд╛рд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдордВрдЧрд▓рд╛рдЪрд░рдг рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдордп рдХреЗ рджреМрд░рд╛рдиред
    рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, @Test ( @Test = 5, рдЗрдирд╡реЛрдХреЗрд╢рди @Test = 20)ред
  • рдЕрдкреЗрдХреНрд╖рд┐рдд рдЕрдкрд╡рд╛рдж: рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдореЗрдВ рдлреЗрдВрдХрдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдкрд╡рд╛рдж рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдлреЗрдВрдХрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓ рд░рд╣рд╛ред рдЕрдиреНрдпрдерд╛, рдПрдХ рдЕрдкрд╡рд╛рдж рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдиреНрдп рдЕрдкрд╡рд╛рдж рдХрд╛ рдлреЗрдВрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
    рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, @Test (рдЕрдкреЗрдХреНрд╖рд┐рдд @Test = {ArithmeticException.class})ред

рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рд╕рд╛рде TestNG рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдКрдкрд░ рджреА рдЧрдИ рд╣реИрдВред рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рд╣реИ:

 import static org.testng.Assert.assertEquals; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; import org.openqa.selenium.By; import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterGroups; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterSuite; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeGroups; import org.testng.annotations.BeforeSuite; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; public class AnnotationsTest { private WebDriver driver; private String url = "https://www.lambdatest.com/"; @BeforeSuite public void setUp() { System.setProperty( "webdriver.chrome.driver", ":\\selenium\\chromedriver.exe"); driver = new ChromeDriver(); System.out.println("The setup process is completed"); } @BeforeTest public void profileSetup() { driver.manage().window().maximize(); System.out.println("The profile setup process is completed"); } @BeforeClass public void appSetup() { driver.get(url); System.out.println("The app setup process is completed"); } @Test(priority = 2) public void checkLogin() { driver.get("https://accounts.lambdatest.com/login"); driver.findElement(By.xpath("//input[@name='email']")).sendKeys("sadhvisingh24@gmail.com"); driver.findElement(By.xpath("//input[@name='password']")).sendKeys("xxxxx"); driver.findElement(By.xpath("//*[@id='app']/section/form/div/div/button")).click(); System.out.println("The login process on lamdatest is completed"); } @Test(priority = 0, description = "this test validates the sign-up test") public void signUp() throws InterruptedException { WebElement link = driver.findElement(By.xpath("//a[text()='Free Sign Up']")); link.click(); WebElement organization = driver.findElement(By.xpath("//input[@name='organization_name']")); organization.sendKeys("LambdaTest"); WebElement firstName = driver.findElement(By.xpath("//input[@name='name']")); firstName.sendKeys("Test"); WebElement email = driver.findElement(By.xpath("//input[@name='email']")); email.sendKeys("User622@gmail.com"); WebElement password = driver.findElement(By.xpath("//input[@name='password']")); password.sendKeys("TestUser123"); WebElement phoneNumber = driver.findElement(By.xpath("//input[@name='phone']")); phoneNumber.sendKeys("9412262090"); WebElement termsOfService = driver.findElement(By.xpath("//input[@name='terms_of_service']")); termsOfService.click(); WebElement button = driver.findElement(By.xpath("//button[text()='Signup']")); button.click(); } @Test(priority = 3, alwaysRun = true, dependsOnMethods = "check_login", description = "this test validates the URL post logging in", groups = "url_validation") public void testCurrentUrl() throws InterruptedException { driver.findElement(By.xpath("//*[@id='app']/header/aside/ul/li[4]/a")).click(); String currentUrl = driver.getCurrentUrl(); assertEquals( currentUrl, "https://automation.lambdatest.com/timeline/?viewType=build&page=1", "url did not matched"); System.out.println("The url validation test is completed"); } @Test(priority = 1, description = "this test validates the logout functionality", timeOut = 25000) public void logout() throws InterruptedException { Thread.sleep(6500); driver.findElement(By.xpath("//*[@id='userName']")).click(); driver.findElement(By.xpath("//*[@id='navbarSupportedContent']/ul[2]/li/div/a[5]")).click(); } @Test(enabled = false) public void skipMethod() { System.out.println("this method will be skipped from the test run using the attribute enabled=false"); } @Test(priority = 6, invocationCount = 5, invocationTimeOut = 20) public void invocationcountShowCaseMethod() { System.out.println("this method will be executed by 5 times"); } @AfterMethod() public void screenshot() throws IOException { TakesScreenshot scr = ((TakesScreenshot) driver); File file1 = scr.getScreenshotAs(OutputType.FILE); FileUtils.copyFile(file1, new File(":\\test-output\\test1.PNG")); System.out.println("Screenshot of the test is taken"); } @AfterClass public void closeUp() { driver.close(); System.out.println("The close_up process is completed"); } @AfterTest public void reportReady() { System.out.println("Report is ready to be shared, with screenshots of tests"); } @AfterSuite public void cleanUp() { System.out.println("All close up activities completed"); } @BeforeGroups("urlValidation") public void setUpSecurity() { System.out.println("url validation test starting"); } @AfterGroups("urlValidation") public void tearDownSecurity() { System.out.println("url validation test finished"); } } 

рдХрдВрд╕реЛрд▓ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ:



TestNG рд░рд┐рдкреЛрд░реНрдЯ:



TestNG рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдиреЛрдЯреЗрд╢рди

рд╣рдорд╛рд░реЗ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рдЙрдкрдпреЛрдЧреА рдПрдиреЛрдЯреЗрд╢рди рд╣реИрдВред

@DataProvider

рдЗрд╕ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рд╣реЛрддреА рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рдбреЗрдЯрд╛-рд╕рдВрдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрдирдкреБрдЯ рдорд╛рдиреЛрдВ рдХреЗ рдХрдИ рд╕реЗрдЯ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рдзрд┐ рдХреЛ рджреЛ-рдЖрдпрд╛рдореА рд╕рд░рдгреА рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

@DataProvider рдПрдиреЛрдЯреЗрд╢рди рдореЗрдВ рджреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ:

  • рдирд╛рдо - рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рдирд╛рдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдзрд┐ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рд╕рдорд╛рдирд╛рдВрддрд░ - рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЖрдкрдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рд╣реЛрдирд╛ рдЬреБрдирд┐рдЯ рдХреЗ рдКрдкрд░ рдЯреЗрд╕реНрдЯрдПрдирдЬреА рдХреЗ рдлрд╛рдпрджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЧрд▓рдд рд╣реИред

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ @DataProvider рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рджрд┐рдП рдЧрдП рдирд╛рдо рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде @DataProvider рдЧрдпрд╛ рд╣реИред

 @DataProvider(name = "SetEnvironment", parallel = true) public Object[][] getData() { Object[][] browserProperty = new Object[][]{ {Platform.WIN8, "chrome", "70.0"}, {Platform.WIN8, "chrome", "71.0"} }; return browserProperty; } 

@Factory

рдпрд╣ рдПрдиреЛрдЯреЗрд╢рди рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрдХреНрд╖рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдИ рдкрд░реАрдХреНрд╖рдг рдХрдХреНрд╖рд╛рдПрдВ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ, рдпрд╣ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ @Factory рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдЬреЛ рдЯреЗрд╕реНрдЯ рдХреНрд▓рд╛рд╕ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

 import org.testng.annotations.Test; import org.testng.annotations.Factory; class FactorySimplyTest1 { @Test public void testMethod1() { System.out.println("This is to test for method 1 for Factor Annotation"); } } class FactorySimpleTest2 { @Test public void testMethod2() { System.out.println("This is to test for method 2 for Factor Annotation"); } } public class FactoryAnnotation { @Factory() @Test public Object[] getTestFactoryMethod() { Object[] factoryTest = new Object[2]; factoryTest[0] = new FactorySimplyTest1(); factoryTest[1] = new FactorySimpleTest2(); return factoryTest; } } 

рдХрдВрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ:



@Parameters

рдпрд╣ рдПрдиреЛрдЯреЗрд╢рди рдЖрдкрдХреЛ TestNG.xml рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рддрдм рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реАрдорд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЬрдЯрд┐рд▓ рдФрд░ рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП, @DataProvider рдпрд╛ рдПрдХреНрд╕реЗрд▓ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред

рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:

 @Parameters({"username", "password"}) @Test() public void checkLogin(String username, String password) { driver.get("https://accounts.lambdatest.com/login"); driver.findElement(By.xpath("//input[@name='email']")).sendKeys(username); driver.findElement(By.xpath("//input[@name='password']")).sendKeys(password); driver.findElement(By.xpath("//*[@id='app']/section/form/div/div/button")).click(); System.out.println("The login process on lamdatest is completed"); } 

TestNG.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ:

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Suite"> <test thread-count="5" name="Annotations"> <parameter name="username" value="sadhvisingh24@gmail.com" /> <parameter name="password" value="XXXXX" /> <classes> <class name="Parameter_annotation"/> </classes> </test> <!-- Annotations --> </suite> <!-- Suite --> 

@Listener

рдпрд╣ рдПрдиреЛрдЯреЗрд╢рди рд▓реЙрдЧрд┐рдВрдЧ рдФрд░ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░рддрд╛ рд╣реИред рдХрдИ рд╢реНрд░реЛрддрд╛ рд╣реИрдВ:

  • IExecutionListener
  • IAnnotationTransformer
  • ISuiteListener
  • ITestListener

рд▓реЗрдХрд┐рди рд╣рдо рдЗрди рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЗ рд╡рд░реНрдгрди рдФрд░ рдПрдХ рдЕрдиреНрдп рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред

рд╡рд╣ рд╕рдм рд╣реИ!

рдЗрди рд╕рднреА рдПрдиреЛрдЯреЗрд╢рди рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛ рд╕рдВрд╕реНрдХрд░рдг 1.5 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдиреЛрдЯреЗрд╢рди рдЬрд╛рд╡рд╛ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред

рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдПрдиреЛрдЯреЗрд╢рди рдФрд░ TestNG рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдХреЛрдб рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдкрдардиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИрдВред рдпрд╣ рд╡рд┐рд╕реНрддреГрдд рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдерд┐рддрд┐ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдЖрд╕рд╛рди рдФрд░ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рдмрдирд╛рддрд╛ рд╣реИред рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рд▓рд┐рдП TestNG рдореЗрдВ рдЗрди рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрдкрдХреА рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕рд╣реА рдПрдиреЛрдЯреЗрд╢рди рдЪреБрдирдирд╛ рдФрд░ рдЙрдирдХрд╛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЖрдк рдЕрднреА рд▓реИрдореНрдмрдбрд╛рдЯреЗрд╕реНрдЯ рд╕реЗрд▓реЗрдирд┐рдпрдо рдЧреНрд░рд┐рдб рдкрд░ TestNG рдореЗрдВ рдЗрди рдПрдиреЛрдЯреЗрд╢рди рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!

рдЬреЛ рд▓реЛрдЧ рдЕрдВрдд рддрдХ рдкрдврд╝ рдЪреБрдХреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рдореБрдлреНрдд рдЦреБрд▓реЗ рд╡реЗрдмрд┐рдирд╛рд░ рдореЗрдВ рдЖрдордВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ 14 рдордИ рдХреЛ рд╣рдорд╛рд░реЗ рд╢рд┐рдХреНрд╖рдХ рджрд┐рдорд┐рддреНрд░реА рдПрд░реЗрдорд┐рди рджреНрд╡рд╛рд░рд╛ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЦреИрд░, рд╕реНрдерд╛рдкрд┐рдд рдкрд░рдВрдкрд░рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдо рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ, рдорд┐рддреНрд░реЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

Source: https://habr.com/ru/post/hi450872/


All Articles