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)