0
votes

I am trying to gather the files: output.xml, report.html and log.html when the whole execution ends.

I can use a listener for this purpose but I want to avoid write a line like:

robot --listener "SomeListener.py" YourTestSuite.robot

Then, I looked at the documentation and I found that I can use a Test Library as a Listener and import it in my Test Suite, for example:

class SomeLibrary(object):
    ROBOT_LISTENER_API_VERSION = 2 # or 3
    ROBOT_LIBRARY_SCOPE = "GLOBAL" # or TEST SUITE

    def __init__(self):
        self.ROBOT_LIBRARY_LISTENER = self

    def start_suite(self, data, result):
        pass

    def close(self):
        pass

My problem is that the close method is called when the library goes out of the scope. So, I cannot gather the report files because they don't exist in that moment and I receive an Error. I also tried with the method:

def report_file(self, path):
    pass

But, nothing happens, I guess that it could be because a Library as a Listener cannot use this methods from the Listener API or because the file is still not created.

Any idea about How can I gather those files using a library as a Listener? I am open to ideas or suggestions.

Thanks.

1

1 Answers

0
votes

The Listener specification actually specifies three methods that are triggered when the three files are generated:

startSuite
endSuite
startTest
endTest
startKeyword
endKeyword
logMessage
message
outputFile
logFile
reportFile
debugFile

Have a look at the last 4 ones, which should be helpful. For more details look at the listener API specification. 4.3.3 Listener interface methods