Untitled
unknown
plain_text
a year ago
2.1 kB
4
Indexable
# custom_listener.py
from robot.parsing.model import TestCaseFile
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_arguments = {}
self.test_keywords = {}
# Parse the robot file to extract arguments and keywords
self._parse_robot_file()
def _parse_robot_file(self):
# Load and parse the .robot file
suite = TestCaseFile(source=self.robot_file).populate()
for test_case in suite.testcase_table:
test_name = test_case.name
self.test_arguments[test_name] = []
self.test_keywords[test_name] = []
# Extract arguments and keywords for the test case
for step in test_case.steps:
if '[Arguments]' in step.as_list():
# Capture arguments
args = step.as_list()[1:] # Arguments follow the keyword [Arguments]
self.test_arguments[test_name].extend(args)
else:
# Capture keyword names
keyword_name = step.name
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