gpt4 book ai didi

python - 使用 Python unittest 缓存 setUp() 的结果

转载 作者:太空狗 更新时间:2023-10-29 19:32:19 35 4
gpt4 key购买 nike

我目前有一个 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 中的下一步-- self.__class__.all_trailers,将被初始化。

关于python - 使用 Python unittest 缓存 setUp() 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/402483/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com