我正在为python项目创建测试.正常的测试工作正常,但我想测试在某种情况下我的函数是否会引发一个自定义的异常.因此我想使用assertRaises(Exception,Function).有任何想法吗?
引发异常的函数是:
def connect(comp1, comp2):
if comp1 == comp2:
raise e.InvalidConnectionError(comp1, comp2)
...
Run Code Online (Sandbox Code Playgroud)
例外是:
class InvalidConnectionError(Exception):
def __init__(self, connection1, connection2):
self._connection1 = connection1
self._connection2 = connection2
def __str__(self):
string = '...'
return string
Run Code Online (Sandbox Code Playgroud)
测试方法如下:
class TestConnections(u.TestCase):
def test_connect_error(self):
comp = c.PowerConsumer('Bus', True, 1000)
self.assertRaises(e.InvalidConnectionError, c.connect(comp, comp))
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
Error
Traceback (most recent call last):
File "C:\Users\t5ycxK\PycharmProjects\ElectricPowerDesign\test_component.py", line 190, in test_connect_error
self.assertRaises(e.InvalidConnectionError, c.connect(comp, comp))
File "C:\Users\t5ycxK\PycharmProjects\ElectricPowerDesign\component.py", line 428, in connect
raise e.InvalidConnectionError(comp1, comp2)
InvalidConnectionError: <unprintable InvalidConnectionError object>
Run Code Online (Sandbox Code Playgroud)
assertRaises
期望实际执行呼叫.但是,您已经自己执行了它,从而在assertRaises
实际执行之前抛出错误.
self.assertRaises(e.InvalidConnectionError, c.connect(comp, comp))
# run this ^ with first static argument ^ and second argument ^ from `c.connect(comp, comp)`
Run Code Online (Sandbox Code Playgroud)
使用其中任何一个:
self.assertRaises(e.InvalidConnectionError, c.connect, comp, comp)
with self.assertRaises(e.InvalidConnectionError):
c.connect(comp, comp)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
122 次 |
最近记录: |