Skip to main content
 首页 » 编程设计

Python Unittest之assertRaises 的意外使用

2025年05月04日9youxin

我想知道是否有办法做到以下几点:

class Test_Vector_test(unittest.TestCase): 
    def test_add(self): 
        vector1 = Vector(2,2,2) 
        scalar = 1 
        self.assertRaises(NotImplementedError, vector1+scalar) 

此测试失败,错误代码如下:

Traceback (most recent call last): 
  File "/Users/sahandz/Documents/School/Programmeringsteknik och Matlab/dd1315pylab3-master/test/test_Vector.py", line 14, in test_add 
    self.assertRaises(NotImplementedError, vector1+scalar) 
  File "/Users/sahandz/Documents/School/Programmeringsteknik och Matlab/dd1315pylab3-master/lab/Vector.py", line 17, in __add__ 
    raise NotImplementedError 
NotImplementedError 
 
---------------------------------------------------------------------- 
Ran 3 tests in 0.007s 
 
FAILED (errors=1) 

即使您可以看到它实际上引发了错误。如何在不使用vector1.__add__ 方法的情况下实现所需的功能(检查vector1+scalar 是否引发NotImplementedError)?

请您参考如下方法:

assertRaises 等待可调用的东西,然后将引发错误。 vector1+scalar 在 函数 assertRaises 执行之前进行评估。使用函数、lambda 或 with:

with self.assertRaises(SomeException): 
    do_something() 

另见 the documentation .