我目前有一个unittest.TestCase,看起来像..
class test_appletrailer(unittest.TestCase):
def setup(self):
self.all_trailers = Trailers(res = "720", verbose = True)
def test_has_trailers(self):
self.failUnless(len(self.all_trailers) > 1)
# ..more tests..
这工作正常,但是Trailers()
调用大约需要 2 秒才能运行.. 鉴于此setUp()
在每个测试运行之前调用,现在测试需要近 10 秒才能运行(只有 3 个测试函数)
正确的缓存方式是什么self.all_trailers
测试之间的变量?
删除setUp功能,然后做..
class test_appletrailer(unittest.TestCase):
all_trailers = Trailers(res = "720", verbose = True)
..有效,但随后它声称“在 0.000 秒内进行了 3 次测试”,这是不正确的。我能想到的唯一其他方法是使用一个 cache_trailers 全局变量(它可以正常工作,但相当可怕):
cache_trailers = None
class test_appletrailer(unittest.TestCase):
def setUp(self):
global cache_trailers
if cache_trailers is None:
cache_trailers = self.all_trailers = all_trailers = Trailers(res = "720", verbose = True)
else:
self.all_trailers = cache_trailers
使用只初始化一次的类成员怎么样?
class test_appletrailer(unittest.TestCase):
all_trailers = None
def setup(self):
# Only initialize all_trailers once.
if self.all_trailers is None:
self.__class__.all_trailers = Trailers(res = "720", verbose = True)
引用的查找self.all_trailers
将进入下一步MRO http://www.python.org/download/releases/2.3/mro/ -- self.__class__.all_trailers
,这将被初始化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)