首页 > 解决方案 > Unittest mock getsize 似乎没有模拟

问题描述

我尝试模拟 os.path.getsize 函数,但我仍然得到“没有这样的文件或目录错误”

def _processServerStats(self):
        self.loadavg = psutil.getloadavg()[1]
        vmem = psutil.virtual_memory()
        self.memUsed = vmem.used / 1024**3
        self.memTotal = vmem.total / 1024**3

        disk = psutil.disk_usage(self.defi_path)
        self.diskUsed = disk.used / 1024**3
        self.diskTotal = disk.total / 1024**3
        self.logSize = getsize(self.defi_path + '/debug.log') / 1024**2

@mock.patch('os.path.getsize', return_value=2*1024*1024)
    def test_processServerStats_ok(self, mock_size):
        self.nm._processServerStats()
        self.assertGreater(self.nm.loadavg, 0)
        self.assertGreater(self.nm.memUsed, 0)
        self.assertGreater(self.nm.memTotal, 0)
        self.assertGreater(self.nm.diskUsed, 0)
        self.assertGreater(self.nm.diskTotal, 0)
        self.assertEqual(self.nm.logSize, 2)

这里是错误


self = <masternode_health.test.test_monitor.HealthMonitorTest testMethod=test_processServerStats_ok>, mock_size = <MagicMock name='getsize' id='140246646374848'>

    @mock.patch('os.path.getsize', return_value=2*1024*1024)
    def test_processServerStats_ok(self, mock_size):
>       self.nm._processServerStats()

masternode_health/test/test_monitor.py:262: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
masternode_health/monitor.py:126: in _processServerStats
    self.logSize = getsize(self.defi_path + '/debug.log') / 1024**2
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

filename = '//debug.log'

    def getsize(filename):
        """Return the size of a file, reported by os.stat()."""
>       return os.stat(filename).st_size
E       FileNotFoundError: [Errno 2] No such file or directory: '//debug.log'

/usr/lib/python3.8/genericpath.py:50: FileNotFoundError
========================================================================================= short test summary info =========================================================================================
FAILED masternode_health/test/test_monitor.py::HealthMonitorTest::test_processServerStats_ok - FileNotFoundError: [Errno 2] No such file or directory: '//debug.log'
====================================================================================== 1 failed, 18 passed in 0.19s =========================================================

标签: pythonpython-unittest.mock

解决方案


推荐阅读