Подразделение (формат) - Subunit (format) - Wikipedia

Подгруппа это протокол потоковой передачи результатов тестирования, который обеспечивает обмен данными между модульные тесты и тестовая привязь. Первоначально он был разработан Робертом Коллинзом для модульного тестирования в 2005 году. Subunit поставляется с фильтрами командной строки для обработки потока SubUnit и языковых привязок для Python, C, C ++ и Shell. Привязки легко писать для других языков.

С помощью SubUnit можно легко сделать ряд полезных вещей:

  • Агрегация тестов: Тесты, выполняемые по отдельности, можно объединять, а затем сообщать / отображать вместе.
  • Архивирование тестов: Тестовый запуск может быть записан и воспроизведен позже.
  • Тестовая изоляция: Тесты, которые могут давать сбой или иным образом плохо взаимодействовать друг с другом, можно запускать отдельно, а затем агрегировать.
  • Сетевое тестирование: SubUnit может действовать как необходимая сериализация и десериализация, чтобы получить отчеты о тестовых запусках на распределенных машинах в режиме реального времени.

Версии

Есть две основные версии протокола. Версия 1 была тривиально удобна для чтения человеком, но имела значительные дефекты в том, что касалось высокопараллельного тестирования - в ней не было места для параллельного обнаружения и выполнения, требовалась значительная буферизация при мультиплексировании и она была хрупкой - поврежденный байт мог привести к потере целого потока. неправильно проанализированы. В версии 1.1 добавлена ​​инкапсуляция двоичных потоков, которая устраняет некоторые проблемы, но ядро ​​осталось.

Версия 2 обладает многими хорошими характеристиками версии 1 - ее можно встроить в обычный текстовый поток (например, из системы сборки), и она по-прежнему моделирует xUnit выполнение теста стиля. Он также устраняет многие проблемы с версией 1 - версию 2 можно мультиплексировать без излишней буферизации (во времени или пространстве), она имеет четко определенный механизм восстановления для работы с поврежденными потоками (например, когда два процесса одновременно записывают в один и тот же поток, или где генератор потока страдает ошибкой).

Примеры использования

Вот пример общего формата SubUnit:

время: 2016-03-24 21:05:38.652075Zтест: mytest.SampleTestCase.runTest отказ: mytest.SampleTestCase.runTest [     Проследить (наиболее недавний вызов последний): Файл "/media/windows/dev/java/qaworkspace/pythonnosetests/src/mytest.py", линия    11, в runTest себя.assertEqual(len(s), 4, "Неправильная длина") AssertionError: Неправильный длина ] время: 2011-05-2322:49:38.858163Z

внешняя ссылка