Тесты тесты тесты: Selenium как инструмент тестирования

Image

Selenium – это проект, в рамках которого разрабатывается серия программных продуктов с открытым исходным кодом. Среди продуктов интересен Selenium WebDriver - это программная библиотека для управления браузерами. WebDriver представляет собой драйверы для различных браузеров и клиентские библиотеки на разных языках программирования, предназначенные для управления этими драйверами.

Много слов и мало сути. А суть проста - использование такого веб-драйвера сводится к созданию бота, выполняющего ...

more ...

Тесты тесты тесты: coverage - узнаем сколько процентов кода покрыто тестами

Тесты тесты тесты: coverage - узнаем сколько процентов кода покрыто тестами

Юнит-тесты хороши, когда покрывают весь ключевой код. Однако если проект чуть больше, чем "Hello, world!", то оценить степень покрытия весьма проблематично. Существуют инструменты, которые помогают это делать. Например - coverage.py - модуль Неда Бачелдера.

coverage.py - написан на основе стандартной библлиотеки, может использоваться как из командной строки, так и из кода ...

more ...

Тесты тесты тесты: doctest

Тесты можно писать прям в коде, а точнее в docstring.

Модуль doctest ищет куски текста, которые выглядят как интерактивные сессии Python и затем выполняет эти сессии, чтобы проверить, что они работают точно так же, как показано.

Есть несколько стандартных причин, чтобы использовать doctest:

  • Для того, чтобы проверить актуальность строк документации, убедившись, что все интерактивные примеры работают именно так, как задокументировано ...
more ...

Тесты тесты тесты: nose

nose — это инструмент для прогона тестов посредством unittest (и doctest, с ключом --with-doctest). Имеет также собственное API, использовать которое необязательно. nose автоматически собирает тесты из файлов вида test_*, достаточно умен, чтобы заглянуть в папочку tests при наличии таковой, умеет измерять покрытие кода (code coverage) при помощи coverage.py (--with-coverage). Также можно запустить только тесты, которые отвалились в последний прогон (--failed ...

more ...

Тесты тесты тесты: что такое фикстура (fixture)?

При написании тестов не редка ситуация, когда надо иметь фиксированное воспроизводимое много раз состояние программы. Например, такая-то кнопочка нажата, такой-то класс содержит такие-то значения.

Чтобы не приходилось каждый раз вручную создавать подобное состояние программы используются fixture (фикстуры). Фикстуры позволяют сохранить состояние системы в файл, а потом его от туда загрузить.

По-мимо тестов, фикстуры применяются для создания начального состояния системы. Например ...

more ...

Тесты тесты тесты: пропускаем тесты в pytest по условию

Тесты не всегда универсальны. Например, в Windows надо дергать одну программу, в Linux другую. Чтобы реализовать такую логику в pytest можно воспользоваться - skipif

import sys
@pytest.mark.skipif(sys.version_info < (3,3), reason="requires python3.3")
def test_function():
...

Вот такой пример демонстрирует как можно пропустить тест, если запуск происходит в Python версии ниже 3.3.

more ...

Тесты тесты тесты: модуль тестирования py.test

Наряду с входящими в стандартную поставку питона средствами для тестирования, существуют и альтернативные инструменты, например, py.test. http://pytest.org/

py.test имеет множество расширений, которые значительно упрощают написание тестов. py.test имеет плагины для всех популярных web-фреймворков, с помощью плагинов позволяет кэшеировать результаты (успешных тестов), формировать отчеты в самых различных форматах. А также имеет очень простую систему расширения и ...

more ...

Тесты тесты тесты: создание читаемых отчетов

Тесты тесты тесты: создание читаемых отчетов

Когда в вашей программе очень много тестов, то возникают проблемы с чтением отчетов (что сломалось, что корректно отработало). Для создания читаемых отчетов можно порекомендовать allure-framework. О этом фреймворке можно узнать в видео:

more ...

Имитация файловой системы с помощью mock

Вы пишите тесты? Тогда вам знаком модуль mock (в Python3 находится в unittest). Это модуль, который позволяет сделать имитацию объекта.

Это необходимо, когда пишите тесты на свой код, а этот код использует множество долгих приготовлений: сходить в БД, разобрать данные еще что-то. Вот в этом случае вы можете провести имитацию всех этих долгих приготовлений и сконцентрироваться на написании тестов для ...

more ...

Тесты тесты тесты: unittest - основной инструмент тестирования

Одним из основных инструментов для тестирования в Python - unittest

Это стандартный модуль для реализации юнит-тестов на Python. Unittest это порт JUnit с Java, иными словами ООП стиль, что весьма удобно для тестирования и процедур, и классов.

Возможностей в данном модуле довольно много: проверки (assert*), декораторы, позволяющие пропустить отдельный тест (@skip, @skipIf) или обозначить сломанные тесты (@expectedFailure)

При написании тестов надо ...

more ...