Заставить Nose провалить медленные тесты

Я хочу, чтобы мои тесты терпели неудачу, если они выполняются дольше определенного времени (скажем, 500 мс), потому что это отстой, когда нагрузка слегка медленных тестов увеличивается, и внезапно у вас возникает эта большая задержка каждый раз, когда вы запускаете набор тестов. Существуют ли какие-либо плагины или что-то еще для Nose, которые уже делают это?


person Thomas Parslow    schedule 01.07.2011    source источник


Ответы (2)


Я с уважением предлагаю изменить значение слова «сломанный» — плохая идея.

Значение неудачного/"красного" теста никогда не должно быть чем-то иным, кроме как "эта функциональность не работает". Любое другое действие рискует снизить ценность тестов.

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

  • Ваши тесты работают медленно?
  • Код сломан?
  • Оба вышеперечисленных одновременно?

Я полагаю, что было бы лучше собирать MI из вашего процесса сборки и отслеживать его, чтобы обнаруживать создание медленных тестов, но пусть красный цвет означает «сломанную функциональность», а не «сломанную функциональность и/или медленный тест».

person razlebe    schedule 01.07.2011
comment
Спасибо за Ваш ответ! Это имеет смысл. Любые предложения по созданию отчета о времени выполнения тестового примера? - person Thomas Parslow; 01.07.2011
comment
@ThomasParslow Я использовал функцию секундомера Пиноккио для измерения теста раз. Он создает рассол, который затем можно обработать с помощью простого скрипта Python. - person Karl Bartel; 10.01.2013

Для случаев, когда важно время (например, требования реального времени):

http://nose.readthedocs.org/en/latest/testing_tools.html

nose.tools.timed(limit)

Тест должен быть завершен в течение указанного срока, чтобы пройти его.

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

 from nose.tools import timed
 @timed(.1)
 def test_that_fails():
     time.sleep(.2)
person ted    schedule 24.07.2012