首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >unittest self.assertRaises无法识别异常

unittest self.assertRaises无法识别异常
EN

Stack Overflow用户
提问于 2022-04-22 14:04:13
回答 1查看 268关注 0票数 0

下面的测试在python 3.10.2中失败。

为什么会这样?

如果我在'check_battery_level‘中引发一个通用的“异常”实例,'self.assertRaises’也无法捕获。

代码语言:javascript
复制
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()

输出:

代码语言:javascript
复制
ERROR: test__battery_level_ok (__main__.TestCheckBatteryLevel)
raise LowBattery()
LowBattery: Battery level critically low
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-25 14:34:08

我是在self.assertRaises中调用函数,而不是传入函数。

取代:

代码语言:javascript
复制
self.assertRaises(LowBattery, check_battery_level())

通过以下方式:

代码语言:javascript
复制
self.assertRaises(LowBattery, check_battery_level)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71970065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档