Lubhang Mahalaga 43+ listahan ng Mga Tanong at Sagot sa Panayam sa TestNg

Sa tutorial na ito tatalakayin namin ang mga kumpletong hanay ng Kritikal na TestNg mga katanungan at sagot sa pakikipanayam at ibinahagi depende sa antas ng kahirapan, kung saan mas mahusay mong masangkapan ang iyong sarili nang mabilis sa TestNg at dapat na malinis ang anuman Mga Tanong at Sagot sa Pakikipanayam sa TestNg.

Ang mga hanay ng mga katanungang panayam sa Testng na ito ay ipinamamahagi sa mga sumusunod na module o hanay:

Mga Tanong at sagot sa Panayam sa TestNg
Mga Tanong at sagot sa Panayam sa TestNg

Mga Katanungan sa Panayam sa TestNg - Pangunahing

Mga Katanungan sa Panayam sa TestNg - Panggitna

Mga Katanungan sa Panayam sa TestNg - Advance

Mga Katanungan at Sagot sa Panayam sa Testng || Itakda ang 1

Ano ang TestNG?

Karaniwang kinakatawan ng TestNg ang “Pagsubok sa Susunod na Henerasyon"Ay isang framework ng pagsubok sa yunit na kumokontrol sa daloy at pagkakasunud-sunod ng mga script ng awtomatiko ng pagsubok at pag-aautomat sa pamamagitan ng pagbibigay ng iba't ibang mga anotasyon sa kanilang mga pagpapaandar.

Ano ang mga kalamangan ng TestNg?

            A. Sa pamamagitan ng iba't ibang mga anotasyon ng Testng, maaari mong makontrol ang daloy at pagkakasunud-sunod ng pag-aautomat at pagpapatupad ng Test sa isang mas mahusay na diskarte.

            B. Mga Klase sa Pagsubok o Mga Paraan ng script ng pagsubok ay maaaring makamit ang TestNg.

           C. Ang TestNg ay madaling maisama sa iba't ibang mga tool sa pagbuo tulad ng Maven, Gradle. Gayundin, maaari itong isama sa mga tool ng CICD tulad ng Jenkins.

           Nagbibigay ang D. TestNG ng mga detalye ng tampok sa pag-uulat ng HTML at madaling isama sa iba pang platform ng pag-uulat ng pagsubok tulad ng Allure, Malawakang Ulat na may mga tampok ng Mga Nakikinig sa TestNG.

          E. Ang lahat ng mga pagsubok ay maaaring ma-trigger ng testng.xml file kung saan maaari mong banggitin ang tatak na klase ng Pagsubok / Pagsubok / Pagsubok na tatakbo.

          F. Maaaring gawin ang Pagsubok na hinimok ng data sa anotasyon ng TestNg DataProvider. Gayundin, ang mga parameterization na Pagsubok ay maaaring gawin sa pamamagitan ng Testng.xml din, tulad ng habang gumaganap ng pagsubok sa cross browser, maaari mong i-parameter ang iba't ibang mga browser para sa iba't ibang mga pagsubok. Ang tampok na ito ay makakatulong upang mabuo ang Data Driven Framework sa TestNG.

         G. TestNg Nagbibigay ng isang paraan upang isama / ibukod ang isang hanay ng isang pagsubok mula sa tesngNg.xml na may isama at ibukod na katangian.

         H. Sa TestNg, maaari mong pangkatin ang iyong mga pagsubok at pag-iniksyon ng dependency sa pagitan ng mga pagsubok.

         I. Nagbibigay ang TestNg ng maraming tagapakinig sa mga maaari mong makamit ang maraming mga bagay tulad ng maaari mong gawin ang pasadyang pag-uulat (IReporter), pagsasama sa iba't ibang mga tool (ITestListener), Baguhin ang pag-uugali ng anotasyon ng TestNG Test sa runtime na may IAnnotationTransformer at marami pa.

        J. Maaari mong laktawan ang tukoy na pagsubok, unahin ang iyong order ng pagsubok, lumikha ng isang pagsubok na nakasalalay sa oras sa mga anotasyon ng TestNg Test.

        K. Maaari kang gumamit ng Hard Assertion pati na rin ng Soft Assertion sa TestNg para sa pagsulat ng pahayag na Assert.

        Ang L. TestNg ay bumubuo ng TestNG-failed.xml pagkatapos ng bawat pagpapatupad ng Test, kaya maaari mong gawin ang parehong nabuong TestNG-failed.xml upang muling maitaguyod ang iyong mga nabigong script ng pagsubok.

       Nagbibigay ang M. TestNg ng iba't ibang anotasyon sa pagsubok tulad ng @BeforeMethod, @AfterMethod, @BeforeTest, @ AfterTest. @BagoSuite,@AfterSuite.

       N. Maaari mong patakbuhin ang inaasahang pagbubukod sa Pagsubok sa TestNg.

       O. Maaari mong muling patakbuhin ang nabigong pagsubok kasama si IretryAnalyzer ng Testng 

Paano mo mag-trigger at ipatupad ang TestNg test Script?

Maaari mong patakbuhin ang script ng TestNg Test sa maraming paraan: 

      A. Mag-right click sa Class ng Pagsubok at "tumakbo bilang" at piliin ang pagpipilian ng "TestNg Test."

      B. Lumikha ng testng.xml at pakanan sa file at patakbuhin ang xml file.

      C. Kung isasama mo ang testNg.xml sa build tool tulad ng Maven / Gradle, maaari ka ring tumakbo mula sa maven o Gradle din.

      D. Kung ang tool na bumuo tulad ng Maven / Gradle ay isinama sa CICD, maaari kang tumakbo mula sa CICD, ibig sabihin, mula sa Jenkins.

Ilahad ang mga anotasyon ng Testng na magagamit?

Ang pangunahing ginagamit na mga anotasyon ng Testng Test ay:

@BeforeSuite

@AfterSuite

@BeforeTest

@AfterTest

@Bago mag klase

@Pagkatapos ng klase

@BeforeMethod

@AfterMethod

@BeforeGroups

@AfterGroups

@Pagsusulit

Nabanggit ang pagkakasunud-sunod ng pagpapatupad ng mga anotasyon ng TestNg?

Mula sa pananaw sa pagpapatupad ng pagsubok dito ay ang pagkakasunud-sunod sa ibaba para sa lahat ng magagamit na mga anotasyon ng TestNg:

Mga Annotasyon ng Precondition:

@BeforeSuite

@BeforeTest

@Bago mag klase

@BeforeMethod

Mga Annotasyon ng Pagsubok:

@Pagsusulit

Mga Anotasyon ng PostCondition: 

@AfterSuite

@AfterTest

@Pagkatapos ng klase

@AfterMethod

Paano hindi pagaganahin ang pagpapatupad ng pagsubok para sa isang script ng pagsubok?

Maaari mong gamitin ang pinagana na katangian ay katumbas ng hindi totoo sa katangiang @Test na anotasyon tulad ng nabanggit sa ibaba:

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

Paano mo matutukoy ang mga tagapakinig sa TestNG xml?

Maaari mong gamitin ang Tesng xml file para sa pagbanggit sa mga tagapakinig upang magamit bilang bahagi ng mga pagpapatupad ng script ng pagsubok, sa diskarte sa ibaba:

        

        

...

Ano ang Timeout Test sa TestNg?

Sa kasong ito, nangangahulugang ang "timeout test", kung sakaling ang script ng pagsubok ay mas matagal kaysa sa tinukoy na tagal ng oras upang maisagawa, kung gayon ang testng ay magpapalaglag ng pagsubok at markahan bilang isang nabigo na pagsubok.

@Test(timeOut = 6000) // this time in mulliseconds
public void testShouldPass() throws InterruptedException {
   Thread.sleep(2000);
}

Paano makakamtan ang Inaasahang Exception Test sa TestNG?

Kung ang isang paraan ng Pagsubok ay nagtatapon ng isang pagbubukod, na kapareho ng tinukoy bilang bahagi ng pagsubok na anotasyon ng inaasahang katangian ng Mga Exception, pagkatapos ay markahan ng TestNg ang pagsubok na naipasa na.

@Test(expectedExceptions = ArithmeticException.class)
public void TestDivision() {
   int i = 1 / 0;
}

 Ang pamamaraang pagsubok sa itaas ay ipapasa habang itinatapon ang kataliwasang inaasahan ng TestNG.

Ano ang pagkakaiba sa pagitan ng @BeforeTest at # @ BeforeMethod na anotasyon?

Ang @BeforeTest ay naisagawa nang isang beses bago ang bawat testng tag nabanggit sa testng.xml file 

Ang @BeforeMethod ay naisakatuparan bago ang bawat isang pamamaraan ng script ng pagsubok.

Ano ang bentahe ng paggamit ng testng.xml file?

Gamit ang testng.xml file, makokontrol mo ang daloy ng pagpapatupad gamit ang solong test suite o maraming test suite sa isang solong testng xml file. Ang ilan sa mga mahahalagang tampok ay:

Pinapayagan kami ng A. testng.xml file na ibukod at isama ang mga pamamaraan ng pagsubok at pagpapatupad ng pangkat ng pagsubok.

B. Maaari mong ipasa ang data ng pagsubok / mga parameter sa pamamagitan ng testng.xml.

C. Maaari kang magdagdag ng pagtitiwala sa pagitan ng mga pamamaraan ng pagsubok at isang pangkat din ng mga pamamaraan ng pagsubok

D. Maaari mong unahin ang mga kaso ng pagsubok.

E. Ang magkatulad na pagpapatupad ng pagsubok ng mga kaso ng pagsubok ay nakamit.

F. Maaari kang magpatupad ng iba't ibang mga tagapakinig ng testng at gamitin ang mga ito sa pamamagitan ng pagbanggit sa mga nasa testng.xml.

G. Kung pinatakbo mo ang iyong suite sa testng.xml, mabibigo mo lamang ang pagsubok para sa susunod na pag-ulit sa pamamagitan ng paggamit ng TestNG-failed.xml ay nabuo pagkatapos ng bawat pagpapatupad.

H. Maaari kang magpatakbo ng mga tukoy na pangkat ng mga pagsubok na ginagamit tag ng TestNG xml.

Gaano karaming uri ng mga dependency ang maaari mong makamit sa pamamagitan ng paggamit ng TestNG?

Mayroong dalawang uri ng mga dependency na maaari nating makamit sa TestNG: 

A. DependeOnMethods: 

Sa pamamagitan ng paggamit ng atribut na ito ay nakasalalay

@Test
public void loginUserProfile() {
   System.out.println("Login user ");
}
@Test(dependsOnMethods = "loginUserProfile")
public void logOutPage_user() {
   System.out.println("Logout page for User");
}

 Narito ang pamamaraan ng pagsubok ng logOutPage_user na tatakbo pagkatapos ng matagumpay na pagpapatupad ng pagsubok sa pag-loginUserProfile.

B. nakasalalay sa Mga Grupo: 

Sa ganitong uri ng pagtitiwala sa pagsubok, Pinapayagan kaming ilagay ang dependency na iniksyon para sa mga pamamaraan ng pagsubok sa isang pangkat ng mga pamamaraan ng pagsubok.

Ang daloy ng pagpapatupad ay nangyayari sa paraang hal hal, ang testGroup ay unang na-trigger at naisakatuparan at pagkatapos ay ang umaasa na pamamaraan ng pagsubok ay nai-trigger, at sa sandaling matapos ang matagumpay na pagkumpleto ng pagsubok ng pangkat, ang dependanteng pamamaraan ng pagsubok ay papatayin.

@Test(groups="AtestGroupName")
public void testcaseOne()
{
   System.out.println("testcaseOne in process");
}
@Test(groups="AtestGroupName")
public void testcaseTwo()
{
   System.out.println("testcaseTwo in process");
}
@Test(dependsOnGroups="AtestGroupName")
public void testcaseThree()
{
   System.out.println("testcaseThree in process");
}

Mga Katanungan at Sagot sa Panayam sa Testng || Itakda ang 2

Ano ang ibig sabihin ng invocationCount sa TestNG?

ang invocationCount ay isang katangian ng pagsubok na anotasyon kung saan maaari mong tukuyin ang bilang ng pag-ulit na ang pamamaraan ng pagsubok ay papatayin sa isang solong pagpapatupad. 

@Test(invocationCount = 2)
public void testOfInvCount() {
   System.out.println("Invocation count test in progress");
}

 Ang pagsubok sa itaas ay papatay ng dalawang beses habang ang invocationCount ay nabanggit bilang 2.

Ano ang mga tagapakinig sa TestNG?

sa TestNg ang mga nakikinig ay karaniwang interface sa Java kung saan kailangan mong ipatupad sa iyong klase. Ang ipinatupad na klase ay patuloy na makikinig sa ilang mga kaganapan at isasagawa ang tukoy na bloke ng code na nauugnay sa kaganapang iyon. Dito kapag ipinatupad mo ang interface sa huli ay ipinatutupad mo ang mga hindi naipatupad na pamamaraan at ang mga bloke ng code o ang mga pamamaraan ay maipatupad bilang at kailan tiyak na kaganapan nagti-trigger. 

Sa tulong ng mga tagapakinig ng TestNG, maaari tayong magsagawa ng maraming mga aksyon sa run time sa pamamagitan ng pakikinig sa ibang kaganapan na na-trigger ng pagpapatupad ng script ng pagsubok at kanilang katayuan, o maaari naming gawin ang pag-uulat. Gayundin, maaari nating baguhin ang pagpapatupad ng anotasyon ng TestNg.

Nabanggit ang mga pagkakaiba sa pagitan ng mga anotasyon ng @Factory at @Dataprovider sa TestNg?

@Dataprovider: Kung nais mong magpatupad ng parehong pagsubok, ngunit may iba't ibang magkakaibang hanay ng data sa bawat pagpapatakbo, maaari mong gamitin ang anotasyon ng dataprovider, at maaari mong makamit ang diskarte sa pagsubok ng datadriven. Narito ang pagpapatupad ng paraan ng pagsubok na nangyayari gamit ang parehong halimbawa ng klase kung saan kabilang ang pamamaraan ng pagsubok.

@Factory: Isasagawa ito ang lahat ng mga pamamaraan ng pagsubok na naroroon sa loob ng isang klase ng pagsubok gamit ang magkakahiwalay at maraming mga pagkakataon ng klase.

Paano magagamit ang TestNG Reporter Class para sa henerasyon ng pag-log?

Maaari mong i-log ang mga detalye at data gamit ang klase ng Reporter, at ang mga log na ito ay makukuha ng ulat na nabuo ng TestNG

Reporter.log ("Mensahe sa pag-log");

Paano gagawin ang paghawak ng pagbubukod sa TestNG?

Maaari mong banggitin ang uri ng inaasahang pagbubukod sa isang katangian na tinatawag na ExpectedExceptions na may @test na anotasyon; sa kasong ito, pagkatapos markahan ng TestNg ang pagsubok na naipasa na.

@Test (inaasahanExceptions = numberFormatException.class)

Paano makamit ang dependency injection sa pamamagitan ng TestNg XML?

Pinapayagan kami ng TestNG na mag-iniksyon ng mga dependency sa pagitan ng iba't ibang mga pangkat ng mga pagsubok sa pamamagitan ng TestNG XML file. Sa pamamagitan nito ay maaaring magkaroon tayo ng pagpapakandili ng isang pangkat sa isa pa.

Ano ang iba't ibang mga diskarte sa assertion para sa TestNG?

Maaari kaming gumamit ng dalawang uri ng mga assertions sa TestNg. 

Malambot na Mga Assert

Mahirap na Mga Assert 

Nabanggit ang ilan sa mga karaniwang ginagamit na assertion sa TestNG 

Ang ilan sa mga malawakang ginagamit na pamamaraan ng assertion sa TestNG:

  • assertEquals (aktwal na boolean, inaasahan ng boolean)
  • assertEqual (Tunay na String, inaasahan ang String)
  • assertEqual (String tunay na Resulta, String inaasahang Resulta, String na mensahe)
  • assertTrue (kondisyon)
  • assertFalse (kondisyon)
  • assertFalse (kondisyon, mensahe)
  • assertTrue (kondisyon, mensahe)

Ano ang naiintindihan mo ng mga assert sa TestNG?

Ginagawa ang isang assertion upang mapatunayan ang tunay na mga resulta ng pagsubok na may paggalang sa inaasahang mga resulta sa pagsubok. Sa TestNg, maaari naming gamitin ang hard assert ng soft assert. 

Pagkakaiba sa pagitan ng Hard assert at soft assert sa TestNg

Habang nagtatrabaho kasama ang Hard assert, Kung sakaling makakuha kami ng anumang pagkabigo sa kundisyon ng assertion kung gayon ang mga kasunod na hakbang sa pagsubok ay hindi naisasagawa at tatanggalin, at sa kalaunan ang pagsubok ay mamarkahan bilang isang nabigo na kaso ng pagsubok. 

Habang sa kabilang banda ang Soft Assert ay isinasaalang-alang ang pagpapatunay ng lahat ng mga punto ng assertion kahit na mayroong anumang mga pagkabigo sa alinman sa mga assertions. Nangangahulugan iyon na ang pagpapatupad ng pagsubok ay hindi napalaglag kahit na ang isang pagpapahayag ay nabigo.

Paano sumulat ng soft assertion sa TestNg 

Ang piraso ng code sa ibaba ay nagbibigay ng diskarte ng pagsusulat ng malambot na pagpapahayag sa TestNG

 @Test
   public void assertion() {
   SoftAssert softAssertion = new SoftAssert();
   //Assertion 1 
   softAssertion.assertEquals("exp", "act");
   //Assertion 2 
   softAssertion.assertEquals(123, 123);
   //Assertion 3 
   softAssertion.assertEquals("actual Value", "expected value");
   // At the end considering all the assertion values
   softAssertion.assertAll();
}

Paano magagamit ang regular na pagpapahayag sa mga pangkat ng TestNG?

Ang isang regular na expression ay maaaring magamit sa TestNG upang maisagawa ang mga pangkat na mayroong isang katulad na pattern sa kanilang pagbibigay ng pangalan. 

Halimbawa, kung nais mong patakbuhin ang lahat ng mga pangkat na nagsisimula sa "testX" ayon sa pangalan ay nababahala, pagkatapos ay maaari mong gamitin ang regular na expression bilang testX. * Sa TestNG XML file.

Mga Katanungan at Sagot sa Panayam sa Testng || Itakda ang 3

Paano mo ibinubukod ang isang pangkat mula sa ikot ng pagpapatupad ng pagsubok?

Maaari mong gamitin ang pagbubukod ng tag upang maibukod ang isang pangkat ng kaso ng pagsubok mula sa pagpapatupad sa pamamaraan sa ibaba sa Testng xml file 

    

        

        

    

Ano ang mga uri ng ulat na nabuo sa TestNG bilang default?

Bumubuo ang TestNG ng dalawang uri ng mga ulat pagkatapos ng pagpapatupad, na kung saan ay:

  • Mga Ulat na Maaaring Mag-email
  • Mga Ulat sa Index

Nabanggit ang pagkakaiba sa pagitan ng test test ng TestNG at pagsubok na TestNG?

Ang test test ng TestNG ay ang koleksyon ng mga klase sa pagsubok at mga pamamaraan ng pagsubok na maaaring patakbuhin nang sabay-sabay pati na rin nang parallel mula sa TestNG XML file. 

Sa kabilang banda, ang pamamaraan ng pagsubok na TestNG ay isang solong file ng kaso ng pagsubok o pamamaraan ng pagsubok.

Ano ang silbi ng katangian ng threadPoolSize na may anotasyon na @Test 

Sa pamamagitan ng katangian ng The threadPoolSize maaari naming tukuyin ang isang thread pool na may tukoy na nabanggit na laki sa pamamagitan ng numero para sa testmethod upang maipatupad sa pamamagitan ng maraming magagamit na mga thread.

Ang katangian ay hindi papansinin kung ang invocationCount ay hindi nabanggit.

 @Test(threadPoolSize = 3) 
   public void testCaseOne(){
      System.out.println("testCaseOne in process");
   }

Sa pamamaraan sa pagsubok sa itaas, ang testCaseOne ay tatawagin mula sa tatlong magkakaibang mga thread.

Ano ang ginagawa ng mga katangiang lagingRun?

Ang katangiang lagingRun anotation na ito ay ginagamit tuwing nais mong ipatupad ang pamamaraan ng pagsubok anuman ang mga umaasa na mga parameter kung saan nakasalalay ang pamamaraan ng pagsubok, nabigo. Kung magtatakda ka sa totoo kailangan mong itakda ang katangian na totoo.

Ano ang iba't ibang mga tagapakinig na magagamit?

ITestListener

IReporter 

ISuiteListener

IAnnotationTransformer 

IAnnotationTransformer2

IHookable 

IInvokeMethodListener 

IMMetodInterceptor 

Ano ang default na halaga para sa Priority ng TestNG?

Ang prioridad ng TestNG ay may default na halaga na zero.

Paano muling patatakbuhin ang Mga Nabigo na Pagsusulit sa TestNg gamit ang mekanismo ng Auto Retry?

Nagbibigay ang TestNg ng isang interface na tinatawag bilang IRetryAnalyzer tagapakinig na maaari mong ipatupad ang interface ng auto muling patakbuhin ang iyong Failed Test script sa pamamagitan ng pagbanggit sa klase sa testNg.XML file, Narito ang code sa ibaba para sa pagpapatupad ng pareho:

Subukang Subukang muli ng Mga Nabigo na Pagsubok ang TestNg
Ang mga tanong at sagot sa panayam sa testng- TestNg Retry Test Script

Sa lugar sa itaas maaari mong i-configure ang bilang ng muling pagsubok, maximum na bilang at maaari mo ring banggitin kung saan ang lahat ng mga pagbubukod na nais mong muling patakbuhin ang mga script ng Pagsubok.

Pangalawang diskarte: Paano upang muling patakbuhin ang Mga Nabigo na Pagsusulit sa TestNg gamit ang mekanismo ng Auto Retry

Sa diskarte sa ibaba maaari kang bumuo ng 2 klase ie isa ay Subukang muli ang klase kung saan maaari mong panatilihin ang lohika ng pagkontrol sa bilang ng pag-ulit kapag ang mga pagkabigo sa pagsubok na kung saan ay ipatupad ang interface ng Testng IRetryAnalyzer.

Ang isa pang klase ay karaniwang ipapatupad ang isa pang nakikinig sa interface na IAnnotationTransformer at ipatupad ang pamamaraan ibahin ang anyo na panloob na nakikipag-ugnay sa nakaraang klase (hal Subukang muli ang klase)

public class Retry implements IRetryAnalyzer {

    int retryCounter = 0;
    
    // The maximum number of failed execution 
    int autoRetryLimit = 2;

    @Override
    public boolean retry(ITestResult iTestResult) {
        if (retryCounter < autoRetryLimit) {
            retryCounter++;
            return true;
        }
        return false;
    }
}

public class CognitiveRetry implements IAnnotationTransformer {


    public void transform(ITestAnnotation annotation, Class testClass, Constructor testCons, Method tMethod){
        IRetryAnalyzer retryAnalyzer=annotation.getRetryAnalyzer();
        if(retryAnalyzer==null){
            annotation.setRetryAnalyzer(Retry.class);
        }
    }
}

at sa wakas idagdag ang CognitiveRetry klase sa tagapakinig para sa testng.xml file.

<listeners>
    <listener class-name= "com.lambdageeks.cognitiveRetryUtils.CognitiveRetry"/>
</listeners>

Paano makamit ang pagpapatupad ng TestNG itestlistener?

Ang ITestListener ay isang interface sa TestNg na may maraming mga pamamaraan (hindi naipatupad mula nang isang interface ito) na maaaring ipatupad ng isang klase. Ang bawat pamamaraan ay kumakatawan sa mga tiyak na pag-andar o sitwasyon, samakatuwid nakasalalay sa iyong pangangailangan maaari mong ipatupad ang mga pamamaraang iyon.

Halimbawa onTestFailure ay isang paraan kung saan maaari mong ipatupad kung saan mo nais magsagawa ng anumang pagpapatakbo habang ang anumang paraan ng pagsubok ay nabigo, hinayaan nating sabihin na nais mong makuha ang screenshot habang sa anumang pagkabigo sa pamamaraan ng pagsubok, upang maaari mong isulat ang pamamaraang takecreenshot sa loob ng onTestFailure , at dahil ang ITestListener ay isang interface samakatuwid ang testNg ay patuloy na makikinig sa mga kaganapan (pagkabigo sa pagsubok) at tuwing may mga pagkabigo sa pagsubok ay mahuhuli ang iyong screenshot.

Narito ang pagpapatupad ng pagkuha ng screenshot sa tuwing susubukan mo ang mga pagkabigo sa script:

import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;

import java.io.File;
import java.io.IOException;
import java.util.logging.Logger;

public class CustomListerners implements ITestListener {

    WebDriver driver=null;
    String filePath = "D:\\LambdaGeeks\\SCREENSHOTS";
    @Override
    public void onTestFailure(ITestResult result) {
        String testMethodName=String.valueOf(result.getName()).trim();
        ITestContext testContext = result.getTestContext();
        WebDriver driver = (WebDriver)testContext.getAttribute("driver");
        captureTheScreenShot(testMethodName, driver);
    }

    public void captureTheScreenShot(String methodName, WebDriver driver) {
        File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        /*
        Each screenshots will get saved with along with the test Name to have better correlation
         */
        try {
            FileUtils.copyFile(scrFile, new File(filePath+methodName+".jpg"));

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public void onFinish(ITestContext context) {}

    public void onTestStart(ITestResult result) {   }

    public void onTestSuccess(ITestResult result) {   }

    public void onTestSkipped(ITestResult result) {   }

    public void onTestFailedButWithinSuccessPercentage(ITestResult result) {   }

    public void onStart(ITestContext context) {   }

}

At kailangan mo ring idagdag ang klase na ito sa tag ng tagapakinig sa testng.xml file tulad ng ginawa namin sa nakaraang tanong.

Paano Ipapatupad ang testng iAnnotationtransformer?

Nagbibigay ang TestNg ng isang interface na pinangalanan bilang IAnnotationTransformer na nagbibigay ng isang pamamaraan na tinatawag na "transform" na maaari mong ipatupad at mai-trigger sa runtime ng TestNG, ginagamit ang pagpapatupad na ito upang mabago ang pag-uugali ng anotasyon ng pagsubok ng klase ng pagsubok at mga pamamaraan sa pagsubok

Sa segment sa ibaba makikita natin kung paano namin magagawa iyon

public class TestClassAnnotations {

    @Test(alwaysRun = true,dependsOnMethods = "testMethodB")
    public void testMethodA() {
        System.out.println("--- Customizing the runtime behavious with ITestAnnotation ---");
    }

    @Test
    public void testMethodB() {
        System.out.println("--- Second TestMethods ---");
        Assert.fail();
    }

}

Bilang default kung tatakbo namin ang code sa itaas pagkatapos lamang ng isang pamamaraan ang maipatupad na kung saan ay ang testMethodA at isa pang pamamaraan na testMethodB ay mabibigo sapagkat sinadya nating mabigo ito sa pamamagitan ng usinig ng Assert.fail () na pamamaraan.

Ngunit kung babaguhin natin ang Keeprun = totoo anotasyon sa hindi totoo sa pamamagitan ng paggamit ng IAnnotationTransformer pagkatapos ang pamamaraang ito ay hindi maipapatupad, sa ibaba ay ang code snippet kung paano ipatupad ang IAnnotationTransformer at gamitin ito sa pagsubok.xml upang mabago ang asal ng anunsyo ng TestNG

Ang pagpapatupad ng CustomAnnotationTransformers ay pupunta dito:

public class CustomAnnotationTransformers implements IAnnotationTransformer {

    public boolean isTestRunning(ITestAnnotation iTestAnnotation) {
        if (iTestAnnotation.getAlwaysRun()) {
            return true;
        }
        return false;
    }


    public void transform(ITestAnnotation annotations, Class testClasses, Constructor testConstructors, Method testMethods) {

        if (isTestRunning(annotations)) {
            annotations.setEnabled(false);

        }

    }

}

Narito ang tagapakinig na kailangan nating idagdag sa pagsubok.xml file

<listeners>
    <listener class-name= "com.lambdageeks.CustomAnnotationTransformers"/>
</listeners>

Paano ipatupad ang testng iinvokingmethodlistener?

Kung nais mong magpatupad ng isang tampok na kung saan ang ilang tiyak na pamamaraan ay papatayin bago at pagkatapos ng bawat isang paraan ng Pagsubok ng TestNg kung gayon ang tampok na iyon ay maaaring ipatupad ng testng IInvokeMethodListener tagapakinig

 

Narito ang code snippet upang ipatupad ang mga tampok:

package com.lambdageeks;

import org.testng.IInvokedMethod;
import org.testng.IInvokedMethodListener;
import org.testng.ITestResult;


public class CustomAnnotationTransformers implements IInvokedMethodListener {

    public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {

        System.out.println(" ::: Before Method from IInvokedMethodListener is Triggered for the Test Method named as :  " + method.getTestMethod().getMethodName() + " ::: ");
    }

    public void afterInvocation(IInvokedMethod method, ITestResult testResult) {

        System.out.println(" :::: After Method from IInvokedMethodListener is Triggered for the Test Method named as :  " + method.getTestMethod().getMethodName() + " ::: ");

    }
}

Narito ang Class ng Pagsubok para sa pagsubok sa tampok:

public class TestClassAnnotations {

    @Test(alwaysRun = true)
    public void testMethoddummy() {
        System.out.println("--- This is a test Method , testing the feature of IInvokedMethodListener Testng Listener  ---");

    }

}

Kailangan mong Nabanggit ang TestNG iinvokingmethodlistener sa tag ng tagapakinig sa testng.xml tulad ng lagi

<listeners>
    <listener class-name="com.lambdageeks.CustomAnnotationTransformers"/>
</listeners>

Ang output ng pagpapatupad ay ganito ang hitsura:

::: Bago ang Pamamaraan mula sa IInvokeMethodListener ay Triggered para sa Paraan ng Pagsubok na pinangalanan bilang: testMethoddummy :::

- Ito ay isang Paraan ng pagsubok, pagsubok sa tampok ng IInvokingMethodListener Testng Listener -

 :::: Pagkatapos ng Paraan mula sa IInvokingMethodListener ay Triggered para sa Paraan ng Pagsubok na pinangalanan bilang: testMethoddummy :::

Paano ipatupad ang Mga nagbibigay ng data sa TestNG?

Maaari naming ipatupad ang DataProvider gamit ang TestNg sa ibaba na diskarte:

public class DataProviderDemo {

    @DataProvider(name = "dpName")
    public Object[][] dataProvidersMethodName() {
        return new Object[][]{{"Lambda"}, {"Geeks"}};
    }

    @Test(dataProvider = "dpName")
    public void dataproviderDummyTestMethod(String dataValues) {
        System.out.println("The Data Params with data provider examples : : " + dataValues);
    }
}

Kung hindi namin itinakda ang priyoridad ng pamamaraan ng pagsubok kung aling pagkakasunud-sunod ang mga pagsubok ay isinasagawa sa TestNG?

Ang mga pagsubok ay isinasagawa sa pagkakasunud-sunod ng pagkakasunud-sunod ng Alphabatical ng TestmethodName ..

 

Tulad ng sa ibaba ng code na snippet:

public class SequenceTest {

    @Test()
    public void geeks() {
        System.out.println("Sequence Test , Method ran :geeks ");
    }

    @Test()
    public void lambda() {
        System.out.println("Sequence Test , Method ran : lambda ");
    }

    @Test()
    public void abc() {
        System.out.println("Sequence Test , Method ran :abc");
    }
}

Ang output ay ganito ang hitsura:

Pagsunud-sunod sa Sequence, Tumakbo ang pamamaraan: abc

Pagsunud-sunod sa Sequence, Tumakbo ang pamamaraan: geeks

Pagsunud-sunod sa Sequence, Tumakbo ang pamamaraan: lambda

 

Paano patakbuhin ang iyong mga script sa pagsubok nang kahanay?

Maaari mong patakbuhin ang iyong mga script sa Pagsubok gamit ang TestNg XML file sa pamamagitan ng pagbanggit sa parallel = "pamamaraan" thread-count = "2 ″, narito ang 2 magkakatulad na mga kaso ay papatayin, kung nais mong maipatupad ng higit pang mga thread nang kahanay.

<suite name="DummyTest" parallel="methods" thread-count="2" >

<listeners>
<listener class-name="org.uncommons.reportng.HTMLReporter" />
<listener class-name="org.uncommons.reportng.JUnitXMLReporter" />
</listeners>
</suite>  

Paano isasama ang TestNg sa GRADLE build Tool?

Maaari mong patakbuhin ang Testng Suite sa gradong sa iba't ibang paraan:

Paano patakbuhin ang Mga Pangkat ng TestNg gamit ang Gradle: Maaari kang lumikha ng isang Gawain sa build.gradle file na maaaring banggitin ang useTestNG () at banggitin ang mga detalye sa ibaba habang pinapatakbo ang Mga Pangkat ng Pagsubok.

Lubhang Mahalaga 43+ listahan ng Mga Tanong at Sagot sa Panayam sa TestNg
Mga Tanong at Sagot sa Panayam sa TestNg-TestNg na may Gradle

Paano patakbuhin ang Testng Default na tagapakinig sa Gradle upang makabuo ng ulat gamit ang library ng TestNg

Mga Tanong at Sagot sa Panayam sa TestNg- Testng Sa Gradle Default na Mga Nakikinig
Mga Tanong at Sagot sa Panayam sa TestNg- Testng Sa Gradle Default na Mga Nakikinig

Kung nais mong gamitin ang pasadyang tagapakinig pagkatapos ay maaari mong banggitin ang pareho sa sumusunod na diskarte:

Mga Tanong at Sagot sa Panayam sa TestNg-Pasadyang Mga Tagapakinig ng TestNG na may Gradle
Mga Tanong at Sagot sa Panayam sa TestNg-Pasadyang Mga Tagapakinig ng TestNG na may Gradle

Paano patakbuhin ang Testng Runner xml file gamit ang prompt ng utos?

Maaari mong gamitin ang lokasyon na Na-download na TestNg at banggitin ang org.testng.TestNg.testNgRunner.xml upang patakbuhin ang runner xml file mula sa prompt ng utos.

java -cp "/opt/testng-7.1.jar:bin" org.testng.TestNG testngRunner.xml

Paano isama ang TestNg XML sa Maven?

Maaari mong isama ang TestNg sa Maven sa paggamit ng Plugin na tinawag maven-surefire-plugin kung saan maaari mong i-configure upang patakbuhin ang testNgrunner.xml file gamit ang mga pagsasaayos:

Lubhang Mahalaga 43+ listahan ng Mga Tanong at Sagot sa Panayam sa TestNg
Mga Katanungan at Sagot sa Panayam sa TestNg-TestNg-Maven-Surefire Pagsasama

Paano mo matutukoy ang parameter ng TestNg Test gamit ang TestNg at Maven?

Maaari mong tukuyin ang parameter ng Pagsubok gamit ang Maven SureFire Plugin na may TestNg.XML file sa fashion sa ibaba

Lubhang Mahalaga 43+ listahan ng Mga Tanong at Sagot sa Panayam sa TestNg
Mga Tanong at Sagot sa Panayam sa TestNg-Parameter ng Pagsubok

Konklusyon: Sa pamamagitan nito natatapos namin ang listahan ng lahat ng kritikal at mahalaga Ang mga katanungan at sagot sa panayam sa TestNg , upang makakuha ng mas mahusay na mahigpit na pagkakahawak sa TestNg maaari kang dumaan sa lubusang dokumentasyon sa TestNg.

Upang matuto nang higit pa tungkol sa kumpletong Selenium tutorial na maaari mong bisitahin dito.

Tungkol kay Debarghya

Lubhang Mahalaga 43+ listahan ng Mga Tanong at Sagot sa Panayam sa TestNgAng Sarili kong Debarghya Roy, ako ay isang Engineering ARCHITECT na nagtatrabaho kasama ang fortune 5 na kumpanya at isang open source na nag-aambag, pagkakaroon ng humigit-kumulang 12 taong karanasan / kadalubhasaan sa iba't ibang stack ng Teknolohiya.
Nagtrabaho ako sa iba't ibang mga teknolohiya tulad ng Java, C #, Python, Groovy, UI Automation (Selenium), Mobile Automation (Appium), API / Backend Automation, Performance Engineering (JMeter, Locust), Security Automation (MobSF, OwAsp, Kali Linux , Astra, ZAP atbp), RPA, Process Engineering Automation, Mainframe Automation, Back End Development na may SpringBoot, Kafka, Redis, RabitMQ, ELK stack, GrayLog, Jenkins at mayroon ding karanasan sa Cloud Technologies, DevOps atbp.
Nakatira ako sa Bangalore, India kasama ang aking asawa at may hilig sa Blogging, musika, pagtugtog ng gitara at ang aking Pilosopiya ng buhay ay Edukasyon para sa Lahat na nagbigay ng kapanganakan ng LambdaGeeks. Hinahayaan nating kumonekta sa loob ng naka-link - https://www.linkedin.com/in/debarghya-roy/

Mag-iwan ng komento

Ang iyong email address ay hindi ilalathala. Ang mga kailangang field ay may markang *

en English
X