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.
Key Features of Reporter.log():
| Feature | Description |
|---|---|
| Output location | Logs are printed in TestNG's HTML reports (emailable-report.html, index.html) and console if configured. |
| Syntax | Reporter.log(String message) |
| Overloaded method | Reporter.log(String message, boolean logToStandardOutput) where second param lets you print to the console. |
| Use cases | Debugging, logging checkpoints, recording data inputs/outputs, etc. |
Reporter.log("Your log message here");
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
trueas the second argument ensures it prints to the console during execution.
If omitted or set tofalse, 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