init 类异常不会引发由assetRaises()标识的异常
当我为类单独创建一个实例时,定义的异常会正确打印
import unittest
class Circle:
def __init__(self, radius):
# Define the initialization method below
self.radius = radius
try :
if radius < 0 or radius > 1000 : raise ValueError
except ValueError :
print("radius must be between 0 and 1000 inclusive")
class TestCircleCreation(unittest.TestCase):
def test_creating_circle_with_negative_radius(self):
# Try Defining a circle 'c' with radius -2.5 and see
# if it raises a ValueError with the message
# "radius must be between 0 and 1000 inclusive"
with self.assertRaises(ValueError) as e:
c = Circle(-2.5)
self.assertEqual(str(e.exception),"radius must be between 0 and 1000 inclusive")
给出错误:
AssertionError: ValueError not raised
答案 0 :(得分:1)
<init-param>
<param-name>mappedfile</param-name>
<param-value>false</param-value>
</init-param>
仅测试上下文管理器内是否抛出异常。您捕获了异常并且不提出它,因此它不会被unittest看到。
引发异常然后立即捕获它也没有任何意义。 而是:
assertRaises
答案 1 :(得分:0)
您正在__init__
中捕获异常。您的测试断言该异常是从__init__
抛出 out ,而不是捕获在其中。像这样:
def __init__(self, radius):
if radius < 0 or radius > 1000:
raise ValueError("radius must be between 0 and 1000 inclusive")
self.radius = radius