2012-11-21 12 views
5

Używam unittest, aby potwierdzić, że mój skrypt zawiera prawidłowy kod SystemExit.Unittest: należy podać prawidłowy kod SystemExit

Opierając się na przykład z http://docs.python.org/3.3/library/unittest.html#unittest.TestCase.assertRaises

with self.assertRaises(SomeException) as cm: 
    do_something() 

the_exception = cm.exception 
self.assertEqual(the_exception.error_code, 3) 

I kodowane następująco:

with self.assertRaises(SystemExit) as cm: 
    do_something() 

the_exception = cm.exception 
self.assertEqual(the_exception.error_code, 3) 

Jednak to nie działa. Poniższy błąd podchodzi:

AttributeError: 'SystemExit' object has no attribute 'error_code' 

Odpowiedz

8

SystemExit wywodzi się bezpośrednio z BaseException i nie StandardError, zatem nie ma atrybutu error_code.

Zamiast error_code należy użyć atrybutu code. Przykład może wyglądać następująco:

with self.assertRaises(SystemExit) as cm: 
    do_something() 

the_exception = cm.exception 
self.assertEqual(the_exception.code, 3) 
Powiązane problemy