我有一些下面的代码,用于接收文件输入,打开并处理,然后输出一些数据。我已经让功能正常工作了,现在正在进行单元测试,以下是代码示例。
def foo(dir):
path_to_search = join(dir, "/baz/foo")
if isdir(path_to_search):
#path exists so do stuff...
for fname in listdir(path_to_search):
do_stuff()
else:
print "path doesn't exist"
我已经能够轻松地创建一个测试,其中过去不存在,但正如您在上面看到的那样,我断言目录结构的“/baz/foo”部分存在(在生产中,目录结构必须具有此文件,在某些情况下,它可能不存在,我们将不需要处理它。)
我尝试使用TempDir和join创建临时目录结构,但代码总是会弹出说路径不存在。
是否可以模拟os.listdir的输出,以便我无需创建遵循所需/baz/foo约定的临时目录结构?
mocker.replace()
来实现这个功能。 - Lukas Grafunittest.mock
或其后备库mock
。 - Martijn Pietersimport a; a.SomeName
改为from a import SomeName
,会以微妙的方式破坏你的测试,那也是失去了掌控。 - Lukas Graf