#python #python-unittest.mock
Вопрос:
Я пытаюсь имитировать функцию 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 =========================================================
Комментарии:
1. Вы не издеваетесь правильно
getsize
, проверьте, где исправить . Вам нужно что-то вродеpatch("yourmodule.getsize")
, потому что вы, очевидно, делаетеfrom os import getsize
это .2. о, спасибо тебе. работает так