python怎么做目录结构,在Python中模拟目录结构

我有一些代码,我用来接受文件输入,打开和处理,然后输出一些数据.我已经使功能正常工作,我现在正在进行单元测试,下面是代码示例.

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约定的临时目录结构?

解决方法:

您不需要创建虚假的目录结构,您只需要模拟isdir()和listdir()函数.

try:

# Python >= 3.3

from unittest import mock

except ImportError:

# Python < 3.3

import mock

with mock.patch('yourmodule.isdir') as mocked_isdir, \

mock.patch('yourmodule.listdir') as mocked_listdir:

mocked_isdir.return_value = True

mocked_listdir.return_value = ['filename1', 'filename2']

yourmodule.foo('/spam/eggs')

mocked_isdir.assert_called_with('/spam/eggs/baz/foo')

mocked_listdir.assert_called_with('/spam/eggs/baz/foo')

标签:python,unit-testing

来源: https://codeday.me/bug/20190528/1172509.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值