2016-02-18 3 views
2

Есть ли разница между созданием TestSuite и добавлением к нему всех тестовых примеров или просто запуском python -m unittest discover в каталоге TestCases?TestSuite vs "test обнаружить"

Например, для каталога с двумя TestCases: test_case_1.py и test_case_2.py:

import unittest 

from test_case_1 import TestCaseClass as test1 
from test_case_2 import TestCaseClass as test2 


suite = unittest.TestSuite() 
suite.addTest(unittest.makeSuite(test1)) 
suite.addTest(unittest.makeSuite(test2)) 

unittest.TextTestRunner().run(suite) 

Или просто cd в этот каталог и запустить python -m unittest discover.

Я получаю одинаковый результат в любом случае, но мне интересно узнать, является ли один из способов предпочтительным по сравнению с другим, и почему.

ответ

1

Я думаю, что очевидная выгода в пользу discover - это обслуживание.

  • Через месяц вы избавитесь от test_case_2 - некоторые из вашего кода выше Ошибка (import), и вы должны исправить указанный выше сценарий. Это раздражает, но не конец света.

  • Через два месяца кто-то из вашей команды сделал test_case_3, но не знал, что им нужно добавить его в сценарий выше. Никаких тестов не удается, и все довольны - проблема в том, что ничего не происходит с test_case_3. Тем не менее, вы можете возразить, что не рекомендуется писать новые тесты и не заметить, что они не работают. Это приводит к следующему сценарию.

  • Еще хуже - через три месяца кто-то сливает две версии вашего сценария, а test_case_3 снова выжимается. Это может остаться незамеченным. Пока это не будет исправлено, люди могут работать со всеми, что хотят, на предмет, который должен проверять test_case_3, но он просто непроверен.

+0

звучит уважительная причина для избавления от TestSuite, имея в виду, что мой начальник «хочу иметь» (я надеюсь, что он на самом деле не означает, что это .. XD) над 1k тестов XD – yzT

+0

Удачи вам ваш начальник! –

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