【发布时间】:2021-10-19 09:59:35
【问题描述】:
如何重现 OSError 以便知道我的异常有效?
def write_file():
try:
with open('file.txt', "w+") as f:
f.write("sth")
f.close()
except OSError as e:
logging.error("OSError occured")
我想使用 pytest 为函数 write_file() 编写单元测试。如何模拟OSError?
【问题讨论】:
-
您的代码目前不会引发
OSError,并且您在使用上下文管理器时不需要调用f.close()。 -
@Alex 在文件未找到或某事的情况下,我希望异常处理和测试日志的内容。这可能吗?
-
@Alex:关键是如何引发错误。
-
@Jane:您正在打开文件进行写入,这意味着当找不到文件时它永远不会引发错误(在这种情况下会创建它)。如果当前工作目录不再存在或当前用户对当前工作目录没有写访问权限,您确实会收到
OSError异常。 -
@MartijnPieters 我知道,但这是捕获/检测 OSError 所需要的;而且,正如 cmets 所显示的,OP 实际上想要捕获日志,所以 caplog,而不是 pytest.raises
标签: python exception mocking pytest oserror