Showing posts with label TestNG Reporter Log. Show all posts
Showing posts with label TestNG Reporter Log. Show all posts

TestNG Reporter Log

  



What is Reporter.log in TestNG?

Reporter.log() is a method provided by TestNG to log messages during test execution. These logs are then displayed in the TestNG report, particularly in emailable-report.html and index.html. This is useful for debugging and tracking what happens during a test.


Key purpose of Reporter Logs

1. Persistent Logging for Reports

The primary purpose of the Reporter Log is to provide persisting, method-specific log statements that can be viewed later in the test execution reports. Unlike temporary console output, these logs become a permanent part of the test result documentation.


2. Traceability and Debugging

Reporter logs significantly enhance traceability and debugging. By strategically placing Reporter.log() calls throughout a test method, a tester can record key actions, variable values, or intermediate statuses. If a test fails, these logs provide the necessary context and detailed step-by-step information to diagnose the failure without needing to rerun the test or step through the code manually.


3. Separation from Console Output

The Reporter Log offers a distinct advantage over using standard System.out.println():

  • System.out.println() messages go to the console (standard output), which is often cleared or lost in large test suites and is not included in the default TestNG HTML reports.
  • Reporter.log() messages are captured by the TestNG framework and stored, ensuring they appear specifically in the "Reporter Output" section of the index.html and emailable-report.html.


4. Dual Output Capability

While its main role is reporting, the Reporter class is flexible. It allows an optional boolean parameter in its log() method to direct the message to both the report and the standard console output simultaneously. This gives the user control over where the log message is visible.


5. Log Association

TestNG is designed to associate each log entry with the specific test method or configuration method that generated it. This organization makes the reports structured and easy to read, ensuring logs from one test don't clutter the output of another.













Key Features of Reporter.log():


FeatureDescription
Output locationLogs are printed in TestNG's HTML reports (emailable-report.htmlindex.html) and console if configured.
SyntaxReporter.log(String message)
Overloaded methodReporter.log(String messageboolean logToStandardOutput) where second param lets you print to the console.
Use casesDebugging, logging checkpoints, recording data inputs/outputs, etc.



Basic Syntax:

Reporter.log("Your log message here");




Example Java Code Using Reporter.log()

import org.testng.Assert;
import org.testng.Reporter;
import org.testng.annotations.Test;

public class ReporterLogExample {

    @Test
    public void testLogin() {
        Reporter.log("Opening browser", true);
        Reporter.log("Navigating to login page", true);
        
        String actualTitle = "Login - MyApp";
        String expectedTitle = "Login - MyApp";
        
        Reporter.log("Verifying page title", true);
        Assert.assertEquals(actualTitle, expectedTitle, "Page title doesn't match");

        Reporter.log("Login test passed", true);
    }

    @Test
    public void testSearch() {
        Reporter.log("Starting search test", true);

        String keyword = "TestNG";
        Reporter.log("Searching for keyword: " + keyword, true);
        
        // Dummy output
        boolean searchSuccess = true;

        Reporter.log("Search operation completed", true);
        Assert.assertTrue(searchSuccess, "Search failed");

        Reporter.log("Search test passed", true);
    }
}


Code Explanation:


In the class, two test methods are there, in each method: Reporter.log("message", true) logs message to:

  • TestNG report

  • Console output

  • true as the second argument ensures it prints to the console during execution.
    If omitted or set to false, the message will only appear in the report.


Output Location:

After running the test, you’ll find logs in:

Console output when true is passed that TestNG Report Files:

  • test-output/emailable-report.html
  • test-output/index.html


At a glance:

  • Reporter.log() is a handy tool for tracking and debugging in TestNG tests.
  • It helps you monitor steps, values, and flow in reports.
  • Use the second parameter as true to see logs on the console during execution.



Suggested Posts:

1. Read Excel Data by Data provider
2. Annotations in TestNG
3. TestNG Asserts
4. Priority in TestNG
5. Parameterization in TestNG