をテストには、次のようなものが動作するかもしれません。
各テストの最後にtearDown
が呼び出され、self.resultの値がメソッド名と辞書を含むタプルに設定されています(しかし、それを好みの値に設定できます)。検査モジュールを使用してメソッド名を取得するので、tearDown
はどのテストが実行されたかを知っています。
MyTest2、
で
すべて結果は、あなたがtearDownClass
方法で好きなものを行うことができます辞書(results
)、に保存されます。
import inspect
import unittest
class MyTest1(unittest.TestCase):
result = None
def tearDown(self):
print "tearDown:", self.result
def test_aaa(self):
frame = inspect.currentframe()
name = inspect.getframeinfo(frame).function
del frame
self.result = (name, None)
x = 1 + 1
self.assertEqual(x, 2)
self.result = (name, dict(x=x))
def test_bbb(self):
frame = inspect.currentframe()
name = inspect.getframeinfo(frame).function
del frame
self.result = (name, None)
# Intentional fail.
x = -1
self.assertEqual(x, 0)
self.result = (name, dict(x=x))
class MyTest2(unittest.TestCase):
results = {}
@classmethod
def tearDownClass(cls):
print "tearDownClass:", cls.results
def test_aaa(self):
frame = inspect.currentframe()
name = inspect.getframeinfo(frame).function
del frame
self.results[name] = None
x = 1 + 1
self.assertEqual(x, 2)
self.results[name] = dict(x=x)
def test_bbb(self):
frame = inspect.currentframe()
name = inspect.getframeinfo(frame).function
del frame
self.results[name] = None
x = -1
self.assertEqual(x, 0)
self.results[name] = dict(x=x)
if __name__ == '__main__':
unittest.main()
これはちょっとハッキリしている可能性があります(たとえば、Python 3ではテストされていません)。 –