gpt4 book ai didi

python - 跨多个测试脚本模拟 Python 模块

转载 作者:太空宇宙 更新时间:2023-11-03 21:34:30 25 4
gpt4 key购买 nike

在我的实现脚本中,我有一行记录指标:

from datadog import statsd

def some_function:
statsd.increment('some_metric')

从我的测试脚本中,我断言 statsd.increment() 是通过模拟 datadog 模块来调用的:

datadog = Mock()
sys.modules['datadog'] = datadog

def test():
some_function()
datadog.statsd.increment.assert_called()

这工作正常并且通过。但是,一旦我添加另一个调用 some_function() 而不模拟 datadog 的脚本,该脚本就会预先运行并将真正的 datadog 模块加载到缓存中。上述测试失败,因为 some_function() 不再使用模拟数据狗,它使用真实的(缓存的)数据狗。

我该如何解决这个问题?是否可以从缓存中删除该模块?

最佳答案

您是否尝试过在函数 test 中模拟 datalog 模块?只要您的其他脚本没有与您的测试同时运行,这就可能有效。这样,只有在调用函数时才会设置模拟本身,而不是在脚本作用域中设置。

关于python - 跨多个测试脚本模拟 Python 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53323761/

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