kubilaydogan / Test_Automation_with_TestNG

A framework template for demonstrating TestNg usage in Test Automation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Test Automation with TestNG

Features:

  • POM pattern design
  • Base Data Provider
  • Custom Annotation Usage
  • Various test runners (xml files)
  • Logs
  • Extent Report

Running a specific test class

mvn test -Dtest=Test/LoginTests.java

Running a specific test case in a class

mvn test -Dtest=Test/LoginTests.java#loginTestWithInvalidCredentials

Running a single xml

mvn clean test -DsuiteXmlFile=testng.xml

mvn clean verify -Drunner=testng.xml

Running all the xml files mentioned in the pom.xml:

mvn clean test -DsuiteXmlFile

All of the tests are independent from each other, UNLESS we create dependency.

The plugin maven-surefire-plugin is used to configure and execute the tests and generate test reports.

Sample:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${maven-surefire-plugin-version}</version>
       <configuration>
          <suiteXmlFiles>
              <suiteXmlFile>testng.xml</suiteXmlFile>          --> enter path
          </suiteXmlFiles>
          <parallel>methods</parallel>                  --> optional | for parallel execution
          <threadCount>10</threadCount>                 --> optional | for parallel execution
       </configuration>
</plugin>
<plugin>     
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.1.2</version>
    <configuration>
        <groups>P0,P1</groups>
        <excludedGroups>Flaky</excludedGroups>      --> optional
    </configuration>
</plugin>
  • The @DataProvider annotation is used to provide test data to the tests.
  • It allows you to separate the test data from the test logic.
  • With @DataProvider, your test data can be reusable.
  • Basically we have a method annotated with @DataProvider that returns a two dimensional array object containing the data.
  • We specify a name for our data provider, and we it to link the dataprovider to the test.

Example of usage:

@DataProvider(name = "loginData")
public Object[][] provideLoginData() {
    return new Object[][] {
        { "user1", "password1" },
        { "user2", "password2" },
        { "user3", "password3" }
    };
}

@Test(dataProvider = "loginData")
public void testLogin(String username, String password) {
    // ...
}

In our framework, we have also a BaseDataProvider class where we store the test data. This class is extended by the BaseTest class.

About

A framework template for demonstrating TestNg usage in Test Automation

License:Apache License 2.0


Languages

Language:Java 82.4%Language:HTML 17.6%