SubUnit - это протокол потоковой передачи результатов тестирования, который обеспечивает связь между модульными тестами и тестовой оснасткой . Первоначально он был разработан Робертом Коллинзом для модульного тестирования в 2005 году. Subunit поставляется с фильтрами командной строки для обработки потока SubUnit и языковых привязок для Python , C , C ++ и Shell. Привязки легко писать для других языков.
С помощью SubUnit можно легко сделать ряд полезных вещей:
- Агрегирование тестов: тесты, запускаемые по отдельности, можно объединить, а затем сообщать / отображать вместе.
- Архивирование теста : тестовый запуск может быть записан и воспроизведен позже.
- Изоляция тестов: тесты, которые могут дать сбой или иным образом плохо взаимодействовать друг с другом, можно запускать отдельно, а затем агрегировать.
- Grid-тестирование : SubUnit может действовать как необходимая сериализация и десериализация, чтобы запускать тестовые прогоны на распределенных машинах, о которых будет сообщаться в реальном времени.
Версии [ править ]
Есть две основные версии протокола. Версия 1 была тривиально удобна для чтения человеком, но имела значительные дефекты в том, что касалось высокопараллельного тестирования - в ней не было места для параллельного обнаружения и выполнения, требовалась значительная буферизация при мультиплексировании и она была хрупкой - поврежденный байт мог привести к потере целого потока неправильно проанализированы. В версии 1.1 добавлена инкапсуляция двоичных потоков, которая устраняет некоторые проблемы, но ядро осталось.
Версия 2 обладает многими хорошими характеристиками версии 1 - ее можно встроить в обычный текстовый поток (например, из системы сборки), и она по-прежнему моделирует выполнение тестов в стиле xUnit . Он также устраняет многие проблемы с версией 1 - версия 2 может быть мультиплексирована без чрезмерной буферизации (во времени или пространстве), она имеет четко определенный механизм восстановления для работы с поврежденными потоками (например, когда два процесса одновременно записывают в один и тот же поток, или где генератор потока страдает ошибкой).
Примеры использования [ править ]
Вот пример общего формата SubUnit:
Время : 2016 - 03 - 24 21 : 05 : 38,652075 Z тест : MyTest . SampleTestCase . RunTest недостаточность : MyTest . SampleTestCase . RunTest [ Traceback ( самый недавний вызов в прошлом ): Файл "/media/windows/dev/java/qaworkspace/pythonnosetests/src/mytest.py" , строка 11 , в RunTest себя . assertEqual (Len ( ы ), 4 , 'Неправильная длина' ) AssertionError : Неправильный длина ] Время : 2011 - 05 - 2322 : 49 : 38,858163 Z