下面的测试在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发布于 2022-04-25 14:34:08
我是在self.assertRaises中调用函数,而不是传入函数。
取代:
self.assertRaises(LowBattery, check_battery_level())通过以下方式:
self.assertRaises(LowBattery, check_battery_level)https://stackoverflow.com/questions/71970065
复制相似问题