擅长:python、mysql、java
<p>如下图所示重写<code>unittest.TestCase.run()</code>如何?这种方法不需要调用任何私有方法,也不需要对每个方法都做什么,这正是提问者想要的。</p>
<pre><code>from contextlib import contextmanager
import unittest
@contextmanager
def resource_manager():
yield 'foo'
class MyTest(unittest.TestCase):
def run(self, result=None):
with resource_manager() as resource:
self.resource = resource
super(MyTest, self).run(result)
def test(self):
self.assertEqual('foo', self.resource)
unittest.main()
</code></pre>
<p>如果您想在那里修改<code>TestCase</code>实例,这种方法还允许将<code>TestCase</code>实例传递给上下文管理器。</p>