t.me/atinfo_chat Telegram группа по автоматизации тестирования

Интеграция


(Alexander Petrovich) #1

Товарищи. Хоть автоматизацией занимаюсь я сравнительно недавно, уже насобирался довольно таки приличный набор тестов. И nosetests c py.test перестают быть панацеей. Посоветуйте, как их запускать регулярно, пакетно, чтобы перед глазами не сильно маячило по возможности, да подкиньте чтива по логированию


(Дмитрий Жарий) #2

 

furious_duck, сразу оговорюсь что у практики написания тестов на Питоне у меня нет. Я надеюсь что мои общие рекомендации смогут вам помочь. 
 
1. Определитесь чем конкретно вас не устраивает nosetests c py.test. Есть ли другой фреймворк, который бы был «большей» панацеей?. Попробовать несколько фреймворков в начальных стадиях автоматизации (это когда миграция еще не занимает 2 недели), это всегда хорошая идея.
 
2. Какое именно событие вам необходимо для запуска авто тестов? Вы можете запускать тесты по времени. Для этого настройте cron или Виндовз шедулер. Вы можете написать свою утилиту, которая бы в цикле ждала определённого времени. Например, 
 
Run_tests.bat
Start:
Wait.exe 20:35
Run_tests
GOTO Start
Если вы хотите запускать тесты при появлении нового коммита от девелоперов – испольхуйте хуки системы контроля версий и т.п. 
Более «взрослое» решение  – это настроить и использовать Continuous Integration Server, рассмотрите например Jenkins или TeamCity
 
3. Используйте виртуализацию. Очень хорошие результаты показывают бесплатные Virtual Box  и VM Ware Server. Сам VM Ware Server умеет «шарить» оперативную пямять, т.е. вы можете запустить на физической машине с 2 Гб RAM две виртуалки с 1,5 Гб на каждой. Но, VM Ware Server более не поддерживается разработчиками (потому и бесплатный) и не работает на 4-х ядерных процессорах. И Virtual Box и VM Ware Server поддерживают 64-битную архитектуру. 
 
4. Выбор средства логгирования очень сильно зависит от Ваших конкретных нужд. Вы можете погуглить какие логгеры сейчас популярны в мире Питона и использовать готовый, если Вас это устроит. Вы также можете написать свой логгер.  Так же, юнит тест фреймворк  сам по себе может предоставлять удобные средства логирования. Рассмотрите, например, RSpec для Ruby? И возможно сможете найти что-то подобное для Python. 
 

(Mykhailo Poliarush) #3

И nosetests c py.test перестают быть панацеей.
Посоветуйте, как их запускать регулярно, пакетно,
чтобы перед глазами не сильно маячило по возможности,
да подкиньте чтива по логированию

py.test и nose прекрасно подходят для автоматизации selenium на python, просто надо получше разобраться в их функциональности.

вопрос, почему эти фреймворк перестали вас удовлетворять? что случилось?

отвечая на вопрос запуска и регулярности.

  • можно просто создать shell скрипт, который будет запускать ваши тест и включить его в cron для автоматического запуска
    • если запускать тесты через py.test можно включить генерацию junitreport ов
    • возможно вам логгирование и не надо, включите генерацию максимум информации при прогоне через py.test или nose
    • запускайте тесты в несколько потоков
  • если вы на юникс подобной системе (а скорее всего вы на убунту), то тогда можно запускать тесты на виртуальном екране через крон
  • можно создать виртуальную машину и там все гонять, см. пункт первый
  • можно поднять сервер непрерывной интеграции и настроить его на регулярное выполннение тестов (рекомендуемый вариант)

и т.д. варианты есть, главное понять в чем ваша проблема, это абстрактных советов можно написать много :)