gpt4 book ai didi

python - 如何为 OSError 编写单元测试?

转载 作者:太空宇宙 更新时间:2023-11-04 10:34:52 26 4
gpt4 key购买 nike

我有以下要测试的 python 代码:

def find_or_make_logfolder(self):
if not path.isdir(self.logfolder):
try:
makedirs(self.logfolder)
except OSError:
if not path.isdir(self.logfolder):
raise

我想在我的单元测试中做类似下面的事情。

def test_find_or_make_logfolder_pre_existing(self):
with self.assertRaises(OSError):
makedirs(self.logfolder)
find_or_make_logfolder()

但是,if not path.isdir(self.logfolder): 正在检查目录是否已经存在,因此 except OSError 只会在某些情况下被抛出程序或人员在 if 之后和 try 之前几毫秒成功创建目录的边缘情况。

我该如何测试这个,或者我真的需要测试这个吗?

当覆盖率显示为 100% 时,我倾向于喜欢它。

最佳答案

mock库是实现 100% 覆盖率的必备工具。

模拟make_dirs() 函数并设置side_effect在上面:

side_effect allows you to perform side effects, including raising an exception when a mock is called

from mock import patch  # or from unittest import mock for python-3.x

@patch('my_module.makedirs')
def test_find_or_make_logfolder_pre_existing(self, makedirs_mock):
makedirs_mock.side_effect = OSError('Some error was thrown')
with self.assertRaises(OSError):
makedirs(self.logfolder)

关于python - 如何为 OSError 编写单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23947312/

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