Untitled
unknown
plain_text
a year ago
1.8 kB
6
Indexable
# custom_listener.py
from robot.api import TestData
from robot.libraries.BuiltIn import BuiltIn
class CustomListener:
ROBOT_LISTENER_API_VERSION = 2
def __init__(self, robot_file):
self.ROBOT_LIBRARY_LISTENER = self
self.robot_file = robot_file
self.test_data = TestData(source=self.robot_file)
self.test_arguments = {}
self.test_keywords = {}
# Parse the robot file to extract arguments and keywords
self._parse_robot_file()
def _parse_robot_file(self):
for test_case in self.test_data.testcase_table:
test_name = test_case.name
self.test_arguments[test_name] = []
self.test_keywords[test_name] = []
# Extract arguments from the test case keywords
for keyword in test_case.keywords:
if keyword.name == '[Arguments]':
self.test_arguments[test_name].extend(keyword.args)
else:
self.test_keywords[test_name].append(keyword.name)
def end_test(self, name, attributes):
if attributes['status'] == 'FAIL':
# Retrieve arguments and keywords for the failed test
args = self.test_arguments.get(name, [])
keywords = self.test_keywords.get(name, [])
# Build log message
log_message = "<h2>Test Failed</h2>"
log_message += "<b>Test Name:</b> {}<br>".format(name)
log_message += "<b>Arguments:</b> {}<br>".format(args)
log_message += "<b>Keywords:</b> <ul>"
for keyword in keywords:
log_message += "<li>{}</li>".format(keyword)
log_message += "</ul>"
# Log the information with HTML formatting
BuiltIn().log(log_message, html=True)Editor is loading...
Leave a Comment