2014-12-16 2 views
3

У меня есть генератор, который я хочу, чтобы подтвердить закончился (в определенный момент в программе. Я использую UnitTest в питоне 2,7утверждают, что операция вызывает StopIteration

# it is a generator whould have only one item 
item = it.next() 
# any further next() calls should raise StopIteration 
self.assertRaises(StopIteration, it.next()) 

Но он терпит неудачу с сообщением

====================================================================== 
ERROR: test_productspider_parse_method (__main__.TestMyMethods) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/home/myName/tests/__main__.py", line 94, in test_my_method 
    self.assertRaises(StopIteration, it.next()) 
StopIteration 

---------------------------------------------------------------------- 

ответ

6

Вам необходимо пройти сам метод вместо вызова метода. Другими словами, падение скобки.

self.assertRaises(StopIteration, it.next) 

Или вы можете использовать его в качестве менеджера контекста:

with self.assertRaises(StopIteration): 
    it.next() 
+0

@iCodez, Вы правы. Я редактировал его. Спасибо за комментарий. – falsetru

Смежные вопросы