Форум сайта python.su
0
Метод который тестируем
def add_man(self,id,sess): return False
def test_ololo(self): self.assertRaises(Exception,self.user.add_man,(2,3))
Офлайн
52
Что такое исключение знаете?
Офлайн
0
Да, слышал где-то 
Здесь, как раз,тест должен провалиться, потому исключения нет.
Офлайн
52
Покажите полный код. У меня всё ловится )
import random import unittest class A(object): def __init__(self, value): self.value = value def foo(self): print self.value class TestClassA(unittest.TestCase): def setUp(self): self.a = A(random.random()) def test_foo(self): self.assertRaises(Exception, self.a.foo) if __name__ == "__main__": unittest.main()
[23:34] home:~/dev/fun python help.py
0.486900038352
F
======================================================================
FAIL: test_foo (__main__.TestClassA)
----------------------------------------------------------------------
Traceback (most recent call last):
File "help.py", line 18, in test_foo
self.assertRaises(Exception, self.a.foo)
AssertionError: Exception not raised
----------------------------------------------------------------------
Ran 1 test in 0.016s
FAILED (failures=1)
Отредактировано fata1ex (Май 24, 2012 22:36:12)
Офлайн
0
users.py
class Users(): def add_man(self,id,sess): if self.add_to_dict(id,sess): if id not in mans: self.mans[id] = {'sess':sess} else: print '123' else: print '123' #raise TypeError return False
from users import Users import unittest class TestUsers(unittest.TestCase): def setUp(self): self.user = Users() def test_ololo(self): self.assertRaises(Exception,self.user.add_man,(2,3)) if __name__ == '__main__': unittest.main()
chandler@chandler ~/socketio/tests $ python test_users.py . ---------------------------------------------------------------------- Ran 1 test in 0.000s OK
Отредактировано chand (Май 24, 2012 22:39:51)
Офлайн
52
Избавьтесь от кортежа.
def foo(self, oopsy, woopsy): pass def test_foo(self): self.assertRaises(Exception, self.a.foo, (1, 2))
def foo(self, oopsy, woopsy): pass def test_foo(self): self.assertRaises(Exception, self.a.foo, 1, 2)
assertRaises(exception, callable, *args, **kwds)
import random import unittest class A(object): def __init__(self, value): self.value = value def foo(self, oopsy): print oopsy class TestClassA(unittest.TestCase): def setUp(self): self.a = A(random.random()) def test_foo(self): self.assertRaises(Exception, self.a.foo, (1, 2)) if __name__ == "__main__": unittest.main()
(1, 2)
F
======================================================================
FAIL: test_foo (__main__.TestClassA)
----------------------------------------------------------------------
Traceback (most recent call last):
File "help.py", line 18, in test_foo
self.assertRaises(Exception, self.a.foo, (1, 2))
AssertionError: Exception not raised
----------------------------------------------------------------------
Ran 1 test in 0.001s
FAILED (failures=1)
Отредактировано fata1ex (Май 24, 2012 22:54:59)
Офлайн
0
Звучит смешно, но не работает, как и ваш пример 
Офлайн
52
Функция add_man принимает явно два аргумента, а вы ей через тест передаёте лишь один - кортеж (1,2). Взлетает TypeError.
>>> (lambda x, y: x+y)((1,2)) Traceback (most recent call last): File "<input>", line 1, in <module> TypeError: <lambda>() takes exactly 2 arguments (1 given)
Отредактировано fata1ex (Май 24, 2012 23:01:43)
Офлайн
0
Хмм, я передаю любое количество аргументов, а тест успешен. Возможно что-то с питоном / библиотекой тестинга?
Возможно не правильная конфигурация?
Отредактировано chand (Май 24, 2012 23:08:39)
Офлайн
52
Покажите класс Users целиком. Если тест проходит, значит где-то взлетает исключение.
Офлайн