【问题标题】:How to assert for exceptions with python library unittest如何使用 python 库 unittest 断言异常
【发布时间】:2021-09-15 17:44:36
【问题描述】:

我有一个虚拟函数来尝试异常:

def fun(n):
    try:
        if n <1:
            raise ValueError
        return 1
        except:
            pass

在我的单元测试中我使用:

import  unittest
class TestFibonnacci(unittest.TestCase):
    def test_values(self):
        self.assertEqual(fun(1),1)
        self.assertRaises(ValueError, fun(-1))

但是我无法得到我实际得到的答案:

发生异常 乙…… 错误:test_values (ma​​in.TestFibonnacci)

Traceback(最近一次调用最后一次): 这里的追溯

TypeError: 'NoneType' 对象不可调用

在 0.001 秒内运行 1 次测试

我做错了什么?

【问题讨论】:

标签: python unit-testing try-catch python-unittest


【解决方案1】:

您正在立即调用fun(-1),而不是让self.assertRaises 调用它,以便它可以捕获异常。

您必须分别传递函数及其参数。

self.assertRaises(ValueError, fun, -1)

或者,您可以使用assertRaises 作为上下文管理器。

with self.assertRaises(ValueError):
    fun(-1)

with 语句捕获fun 引发的异常并将其提供给assertRaises 返回值的__exit__ 方法。

【讨论】:

  • 另外,还有我个人喜欢的上下文管理器方法
  • 你说得对,我把它作为参数传递了,谢谢,我会接受你的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-12
  • 2015-02-02
  • 1970-01-01
  • 2020-10-25
  • 2022-11-29
  • 1970-01-01
相关资源
最近更新 更多