I found it surprisingly hard to determine in tearDown() whether or not the test that currently ran succeeded or not. I am writing some tests for gnome-settings-daemon and want to show the log output of the daemon if a test failed.
I now cobbled together the following hack, but I wonder if there’s a more elegant way? The interwebs don’t seem to have a good solution for this either.
def tearDown(self):
[...]
# collect log, run() shows it on failures
with open(self.daemon_log.name) as f:
self.log_output = f.read()
def run(self, result=None):
'''Show log output on failed tests'''
if result:
orig_err_fail = result.errors + result.failures
super().run(result)
if result and result.errors + result.failures > orig_err_fail:
print('\n----- daemon log -----\n%s\n------\n' % self.log_output)