我正在尝试测试异常.
我有:
def test_set_catch_status_exception(self):
mro = self.mro
NEW_STATUS = 'No such status'
self.assertRaises(ValueError,mro.setStatus(NEW_STATUS))
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
======================================================================
ERROR: test_set_catch_status_exception (__main__.TestManagementReviewGoalGetters)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_ManagementReviewObjective.py", line 68, in test_set_catch_status_exception
self.assertRaises(ValueError,mro.setStatus(NEW_STATUS))
File "/Users/eric/Dropbox/ManagementReview.py", line 277, in setStatus
raise ValueError('%s is not in the list of allowed statuses: %s' % (status,LIST_OF_STATUSES))
ValueError: No such status is not in the list of allowed statuses: ['Concern or Delay', 'On Track', 'Off Track/Needs Attention']
----------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
谢谢
unu*_*tbu 37
self.assertRaises期望一个函数mro.setStatus,后跟任意数量的参数:在这种情况下,只是NEW_STATUS.self.assertRaises将其参数组装到块mro.setStatus(NEW_STATUS)内的函数调用中try...except,从而捕获并记录ValueError它是否发生.
传递mro.setStatus(NEW_STATUS)作为参数传递给self.assertRaises使ValueError之前发生self.assertRaises罐陷阱它.
所以解决方法是将括号更改为逗号:
self.assertRaises(ValueError,mro.setStatus,NEW_STATUS)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7801 次 |
| 最近记录: |