假设有人为 handle path 不存在:
handle
path
def handle(path): try: with open(path) as f: pass except FileNotFoundError: raise FileNotFoundError(path)
import pytest def test_handle_on_non_existent_path(): x = "abc" # some unbelievable string with pytest.raises(FileNotFoundError): handle(x)
我的问题是,如何为单元测试生成不存在的路径。
"abc" 是相当简洁的,但原则上确实不存在保证路径。
"abc"
更新:在 this question x 是 "no_exist.txt"
x
"no_exist.txt"
关于单元测试,似乎您的目的是测试代码的行为,以防 open(path) 会抛出一个 FileNotFoundError . 您的方法是让代码实际执行 open 调用,但使用不存在的路径名。这有一些缺点:正如您已经注意到的,对真实文件系统的依赖性带来了一个问题:如何为 path 文件系统上不存在可靠的文件。但是,还有一点,即,您甚至不确定文件系统不能存在另一个问题,例如一些与权限相关的问题,这可能会引发一些其他异常。 OSError ).
open(path)
FileNotFoundError
open
OSError
打开 这本身就意味着你不能完全控制所发生的一切。因此,对于这个单元测试用例,一个更好的方法是模拟 让你的嘲笑提高 .
打开