Я пытаюсь выполнить модульное тестирование моего кода sqlalchemy.
def add_user(*user_details):
try:
u = User(*user_details)
session.add(u)
session.commit()
except:
session.rollback()
Теперь в моем модульном тесте:
def testDuplicate(self):
add_user(user_detail1,user_detail2)
self.assertRaises(IntegrityError, add_user(user_detail1,user_detail2))
Этот тест должен завершиться успешно, если вызов функции add_user вызывает ошибку целостности, и завершится неудачно, если исключения нет. Но проблема в том, что тест проходит успешно в обоих случаях.
Почему это происходит? Что-то не так в моем коде? или assertRaises работает не так, как я от него ожидаю?
Сначала я подумал, что это происходит из-за того, что я поместил исключением в своем предложении try, и исключение обрабатывается только там, а assertRaises не получает исключения. Но если бы это было так, то assertRaises должен был бы завершиться ошибкой, если бы не было получено исключение.
Если есть что-то неправильное в написании моего модульного теста, скажите мне, потому что я все еще учусь включать модульное тестирование в свои привычки кодирования.
try/except
в методеadd_user
. Тогда вы должны увидеть ошибку. Или просто удалите вызовsession.rollback
. - person rubik   schedule 13.11.2011