以下測驗在 python 3.10.2 中失敗。
為什么會這樣?
如果我在“check_battery_level”中引發通用“例外”實體,“self.assertRaises”也無法捕獲。
import psutil
import unittest
from unittest.mock import patch, Mock
class LowBattery(Exception):
def __str__(self):
return "Battery level critically low"
def check_battery_level(min_percent: float=10) -> None:
"""Check whether or not battery level is below a defined threshold
:param min_percent: raise excpetion should battery level below min_percent
threshold
:raises: LowBattery exception
>>> check_battery_level(min_percent=0)
False
"""
battery = psutil.sensors_battery()
if battery and battery < min_percent:
raise LowBattery()
class TestCheckBatteryLevel(unittest.TestCase):
def test__battery_level_low_raises_exception(self):
with patch("psutil.sensors_battery", return_value=9):
self.assertRaises(LowBattery, check_battery_level())
unittest.main()
輸出:
ERROR: test__battery_level_ok (__main__.TestCheckBatteryLevel)
raise LowBattery()
LowBattery: Battery level critically low
uj5u.com熱心網友回復:
我在內部呼叫函式self.assertRaises而不是傳入。
代替:
self.assertRaises(LowBattery, check_battery_level())
和:
self.assertRaises(LowBattery, check_battery_level)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/464434.html
