2014-10-14 2 views
0

Итак, я занимаюсь тестированием отдельных модулей, и у меня есть вопрос об ошибках. Я пытаюсь создать собственное сообщение об ошибке, которое будет отображаться, когда тест завершится с ошибкой. Вот базовая программа Hello World. Тест проходит нормально и все, но вот сообщение об ошибке, которое я получаю.Пользовательские сообщения об ошибках в Python

F ====================================================================== FAIL: test_StringContains 
(__main__.TestSuite) ---------------------------------------------------------------------- 
Traceback (most recent call last): File "Testsuite.py", line 8, in test_StringContains 
self.assertEqual("Hello, World", hello_world,"This is a custom error") AssertionError: 'Hello, 
World' != 'Hello World' - Hello, World ? - + Hello World : This is a custom error --------------- 
------------------------------------------------------- 
Ran 1 test in 0.000s FAILED (failures=1) 

Так что это ожидается. Вот мой тестовый набор

from HelloWorld import* 
import unittest 

class TestSuite(unittest.TestCase): 

    def test_StringContains(self): 
      self.assertEqual("Hello World", hello_world,"This is a custom") 


if __name__ == "__main__": 
    unittest.main() 

и вот мой код запуска

hello_world = "Hello World" 
print (hello_world) 

Супер основной, просто хочу понять, как бросить сообщение об ошибке. Единственное, что я хочу увидеть, если тест не сработал, - This is a custom error, я пробовал следовать документации Python по ошибкам & Исключения здесь https://docs.python.org/2/tutorial/errors.html, но не знаю, как их реализовать.

Я не знаю, выполнено это или нет. Любая помощь приветствуется. Спасибо

+0

Пожалуйста, не делайте этого. Наибольшая сила модульных тестов, если факт, что вывод прошел/не прошел (и потому, что они выполняются очень быстро). Stacktraces/stdout/что-то должно использоваться только для отладки, что происходит неправильно, если тесты терпят неудачу. Если вы заставите себя читать данные, чтобы узнать, прошли ли тесты, вы не будете запускать их так часто, как должны. –

+0

Это другое назначение, кроме отладки. – SalceCodec

ответ

2

Что вы можете сделать, это поймать AssertionError обертывания assertEqual в попытке кроме заявления, а затем распечатать ошибку:

 try: 
      self.assertEqual("Hello World", hello_world,"This is a custom error") 
     except AssertionError as e: 
      print(e) 

Там, однако, обратная сторона при ловле на AssertionError: UnitTest модуль больше не могут подсчитывать ошибки. (Stacktraces не являются красивыми, но они служат для того, чтобы точно указать вас на точку в стеке, где произошла ошибка.)

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