Mam kod gdzie assertRaises zgłasza wyjątek, gdy assertRaises kończy się niepowodzeniem. Pomyślałem, że jeśli asertRaises się nie powiedzie, test zakończy się niepowodzeniem i na końcu otrzymam raport, który mówi, że test się nie powiódł. Nie spodziewałem się, że wyjątek zostanie rzucony. Poniżej znajduje się mój kod. Robię coś złego? Używam Python 2.6.2.python unittest assertRaises wyrzuca wyjątek, gdy assertRaises kończy się niepowodzeniem
import unittest
class myClass:
def getName(self):
raise myExcOne, "my exception one"
#raise myExcTwo, "my exception two"
#return "a"
class myExcOne(Exception):
"exception one"
class myExcTwo(Exception):
"exception two"
class test_myClass(unittest.TestCase):
def setUp(self):
self.myClass = myClass()
def testgetNameEmpty(self):
#self.assertRaises(myExcOne,self.myClass.getName)
#self.assertRaises(myExcTwo,self.myClass.getName)
try:
self.assertRaises(myExcTwo,self.myClass.getName)
except Exception as e:
pass
if __name__ == "__main__":
#unittest.main()
suite = unittest.TestLoader().loadTestsFromTestCase(test_myClass)
unittest.TextTestRunner(verbosity=2).run(suite)
co konkretnie rozumiesz przez "assert failed"? Czy możesz opublikować stacktrace lub komunikat o błędzie? –
Ponownie odczytuję dokument i wyrzucam wyjątek, gdy assertRaises zawodzi, to oczekiwane zachowanie. Źle zrozumiałem, jak działa to narzędzie. Zapomniałem o tym wspomnieć w poprzednim poście. Jeśli wychwycę wyjątek, raport powie mi, że test minął, mimo że nie. Zaktualizowałem swój kod na –