python:如何在os.statvfs返回posix.statvfs_result数据类型时进行模拟

问题描述 投票:0回答:1

我正在尝试编写单元测试用例,下面是原始功能的部分代码

def disk_space(something, otherthing):
    """
    Comments
    """
    dir_map = something['dir_map']
    for dir, expected_free_gb in dir_map.items():
        try:
            result = os.statvfs(dir)
            block_size = result.f_frsize
            avail_blocks = result.f_bavail
            giga = 1024 * 1024 * 1024
            free_size = avail_blocks * block_size / giga
            if free_size >= float(expected_free_gb):
                print "No need to clear space"
            else:
                print "Clear some space"

单元测试功能:

@patch('os.statvfs', return_value=posix.statvfs_result(f_frsize=4096, f_bavail=2599495))
def test_disk_space(self, os_statvfs):
    something
    something

现在,如果我在posix.statvfs_result数据类型中返回值,它将给出错误TypeError:找不到必需的参数'sequence'(pos 1),如果我只给出return_value =(f_frsize = 4096,f_bavail = 2599495),它说str( )没有f_frsize。请帮忙。...

python python-mock
1个回答
0
投票

使用以下功能

© www.soinside.com 2019 - 2024. All rights reserved.