Можно ли реализовать несколько бегунов в пюнитесте? пока только один раз запускаю тестовый набор - PullRequest
0 голосов
/ 14 февраля 2020
if __name__ == '__main__':
    if is_running_under_teamcity():
        runner = TeamcityTestRunner()
    else:
        runner =  HTMLTestRunner.HTMLTestRunner(
                stream=outfile,
                title='Test Report',
                description='This is an example.'
                )
    unittest.main(testRunner=runner)

В настоящее время я выполняю некоторые тесты с использованием модуля unittest в python, это мой текущий код выше. Я развертываю эту тестовую настройку в Teamcity, первый модуль позволяет мне преобразовывать выходные данные в сообщения teamcity, а второй создает html отчет о результатах. Есть ли способ, которым я могу запустить оба этих бегуна при выполнении только одного набора тестов? Единственный вариант, который я могу увидеть на минуте, - это попытаться объединить оба этих модуля в гибрид или использовать другой модуль тестирования, который поддерживает Teamcity. Однако я хотел бы сохранить зависимость как можно ниже

Любые идеи были бы отличными :)

1 Ответ

1 голос
/ 18 февраля 2020

Любые идеи были бы великолепны :)

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

К сожалению, это одна из областей stdlib, которая действительно плохо спроектирована: можно ожидать, что test runner будет заниматься исключительно обнаружением и выполнением тестов, однако это также выполняет задачу отчета о тестировании вместо того, чтобы иметь полностью отдельного репортера теста (кроме того, этот отчет о тестировании является разделенной ответственностью с результатом теста, который также не должен быть частью описания этого задания).

Честно говоря, если у вас нет дальнейших настроек Я бы предложил использовать pytest в качестве тестового бегуна вместо юнит-теста с пользовательским бегунком:

  • он должен быть в состоянии выполнить юнит-тесты отлично
  • IME он имеет лучшее разделение проблем и plugga Поэтому наличие нескольких репортеров / форматеров должно работать из коробки
    • pytest- html, конечно, не имеет проблем с генерацией отчетов, не влияя на обычный текстовый вывод
    • в соответствии с readme teamcity получает автоматически включен и используется для pytest
    • , поэтому я предполагаю, что генерация html отчетов во время ваших сборок teamcity будет работать нормально (для проверки)
  • , и вы в конечном итоге сможете перейти на используя тесты pytest (которые намного лучше, это даже не смешно)
...