python - 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 =========================================================
解决方案
推荐阅读
- spring-mvc - Tomcat 8“无法启动组件”
- powershell - Powershell脚本多次循环变量
- excel - VBA Excel使用常见的组合表标题合并几个不同的结构表
- python - 信息理论:尝试使用其他文本 PYTHON 的随机属性创建新文本
- jquery - 在高度范围滑块中定义步长的上限
- android - 在 Android 应用程序中将 Locale 更改为 ARABIC 时出现问题
- corda - 请注册实体“net.corda.finance.schemas.CashSchemaV1”
- python - setuptools 中的 install_requires 是否可以在某些软件包没有明确的 yocto-recipe 的情况下工作
- angular - 只有在有效值之后,如何在 Rx 订阅中做某事?
- android - 使用多个关键字搜索数据库的 sqlite 查询