вторник, 11 ноября 2014 г.

Ссылка. Как в Яндексе используют PyTest и другие фреймворки для функционального тестирования

http://habrahabr.ru/company/yandex/blog/242795/

Процитирую кое что:

"В своё время была возможность поэкспериментировать, и выбор пал на перспективный фреймворк PyTest. Тогда он ещё не был таким популярным, и его мало кто использовал. Нам понравилась концепция использования фикстур и написание тестов в виде обычного Python-модуля без использования API. В итоге PyTest выстрелил, и теперь мы имеем очень гибкое решение с множеством фич, например:

  • фикстуры в виде аргументов тестовых функций, которые позволяют отделить вспомогательную функциональность от самого теста;
  • встроенный assert, который отображает ошибку в удобном виде;
  • pytest.mark.parametrize для запуска тестов на разных наборах данных без дублирования кода;
  • возможность ставить метки на тесты, чтобы помечать падающие тесты или выделять долгоиграющие и запускать их отдельно;
  • поддержка JUnit отчетов с помощью аргумента --junit-xml, кроме этого способность генерировать отчеты в другом формате.
"

"Маркировка


С помощью маркировки можно пометить тест как вызывающий ошибку, пропустить тест, либо добавить user-defined метку. Всё это метаданные для группировки, либо пометки необходимых тестов, кейсов или параметров. В случае группировки мы используем эту возможность для указания severity к тестам и классам, так как есть более и менее важные тесты.

В pytest тесты и параметры тестов можно помечать с помощью специального декоратора@pytest.mark.MARK_NAME. Например, каждый тестпак может идти по несколько минут, а то и более. Поэтому хотелось бы прогнать сначала критичные тесты и потом уже остальные"

"У pytest есть хороший генератор JUnit отчетов, который очень просто интегрируется вJenkins-CI. Мы пользовались им, пока не появился замечательный фреймворк Allure, для формирования более красивых отчетов с дополнительными возможностями.

Список статусов запуска теста в pytest:
  • PASSED — зелененький, успех, тест пройден;
  • FAILED — красненький, тест упал, ошибку вызвала конструкция assert;
  • ERROR — ошибка в тесте, произошла ошибка в фикстуре либо в синтаксисе и др., обычно не связано с конкретным тест кейсом;
  • SKIPPED — игнор, тест помечен каким либо образов depends илиpytest.mark.skip[if] и он не запускается;
  • xfail — тест помечен и ожидаемое падение произошло, assert сработал как и ожидалось;
  • XPASS — тест, помеченный как xfail не упал. Плохо это или хорошо, нужно проверять тестировщику, и либо убирать метку, либо чинить параметры.
"


Комментариев нет:

Отправить комментарий