Buildbot разбирает результаты тестов Python Unit - PullRequest
8 голосов
/ 15 октября 2010

У меня есть набор тестов, который выводит результаты теста в формате Python Unit Test: http://docs.python.org/library/unittest.html

Существует ли существующий модуль / плагин Buildbot, который может анализировать эту форму?

Пример:

DigitalReadWrite_02                                         ... ok
DigitalReadWrite_03                                         ... ok
DigitalReadWrite_04                                         ... ok
PWMoutput_02  (PWM=128 50% LOW 49% HIGH)                    ... ok
PWMoutput_03  (PWM=128 50% LOW 49% HIGH)                    ... ok
PWMoutput_04  (PWM=128 50% LOW 49% HIGH)                    ... ok
--------------------------
Ran 6 tests in 1.652s

OK

Я написал собственный анализатор, но он получил только основные случаи.Стоит ли усилий, чтобы сделать его всеобъемлющим для всех разновидностей тестового формата Python Unit.

1 Ответ

3 голосов
/ 22 января 2011

Нет, нет смысла разрабатывать парсер. Вы можете получить эквивалентную информацию из классов в runner.py модуле.

Подумайте о расширении обоих классов TextTestRunner и TextTestResult с помощью собственной логики (python 2.7). Вывод, который вы перечислили, производится с помощью TextTestResult .

В качестве альтернативы вы можете расширить только TextTestResult и изменить атрибут класса TextTestRunner.resultclass , установив для него новое имя класса расширения.

Данные, которые вы можете извлечь из TextTestResult и поместить в какой-либо список словарей, больше или эквивалентны данным, которые ваш парсер может извлечь.

Фреймворк unittest допускает такие хитрости благодаря своей гибкой конструкции. Надеюсь, это было полезно.

[ EDIT ]

Я считаю, что публикация ваших результатов (например, в виде кода с открытым исходным кодом на github) потенциально очень полезна для людей, которые находят ваш вопрос!

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

Если вы все еще хотели бы использовать подход синтаксического анализа текста - вам может понадобиться перечислить и описать «все разновидности тестового формата Python Unit», которые вы хотите охватить / поддержать. Если вам повезет поместить такое описание в форме грамматики без контекста, то, возможно, вы сможете разработать для него синтаксический анализатор, который охватывал бы «эти» случаи как форму языка.

Пожалуйста, примите мои предостережения: если синтаксический анализ текста не охватывается простым регулярным выражением, и есть вероятность, что вы пытаетесь разобрать какой-то нерегулярный (контекстно-зависимый) язык - скорее всего, вам будет крайне сложно достигнуть.

...