我正在构建一系列测试,发现其中一些测试在一起运行时都失败了。看看他们为什么崩溃,我发现这是因为我们回忆录了一些系统调用的设置。
因为我模拟的是系统调用,而不是回忆录,函数只计算一次,所以它会将这些信息泄漏到后续的测试中。
处理回忆录功能的优雅方法是什么?
还有其他想法吗?
谢谢
发布于 2017-02-07 18:15:29
也许为时已晚,但我发现使用delete_memoized
很容易
# your function
@memoize(timeout=50)
def your_long_function():
# do stuff
# your test
def test_get_folder_content_error_handled(self, flf):
delete_memoized(your_long_function)
your_long_function()
我刚刚在Django中使用了这个解决方案(使用django-回忆录),它的工作原理就像一种魅力!
发布于 2018-03-28 04:17:31
尝试使用MagicMock
而不是香草Mock
。
假设您的代码类似于:
@memoize.Memoize()
def OAuthClient():
"""Returns an Oauth client."""
return 'blah'
用这样的Mock
来嘲弄:
mymodule.OauthPasswordClient = mock.Mock()
返回如下错误:
TypeError: unsupported operand type(s) for +=: 'int' and 'Mock'
但是像这样用MagicMock
来嘲弄:
mymodule.OauthPasswordClient = mock.MagicMock()
效果很好。
https://stackoverflow.com/questions/25722451
复制相似问题