Тестирование OutWiker

Для юнит-тестирования в OutWiker используется стандартный пакет unittest, а также библиотека pytest, которая позволяет удобно запускать тесты. Тесты проверяют работу внутренних компонентов OutWiker, а также элементов графического интерфейса.

Структура тестов

Все тесты располагаются в папке tests. Имена файлов, содержащие тесты, соответствуют маске test_*.py. Все тесты разделены по темам:

tests/core - тесты основного ядра программы без тестов графического интерфейса.

tests/actions - тесты actions (см. раздел Actions (не написано)).

tests/gui - тесты графического интерфейса.

tests/wikiparser - тесты википарсера (см. раздел Парсер викинотации (не написано)).

tests/utilites - тесты для модуля outwiker.utilites.

tests/plugins - тесты плагинов. Для каждого плагина создана отдельная папка внутри tests/plugins/. Например, тесты для плагина markdown располагаются в папке tests/plugins/markdown.

tests/buildtools - Тесты системы сборки.

Параметры команды fab test

Для запуска тестов предназначен скрипт src/runtests.py, который может принимать параметры из командной строки, чтобы затем передать их в pytest. Для запуска тестов предназначена следующая команда fabfile (см. раздел Выполнение команд Fabric):

fab test

С помощью дополнительных параметров команды fab test можно передать дополнительные параметры для pytest. Например:

fab test:"-v - более подробный вывод процесса тестирования.

fab test:"-s" - если тест выводит что-то в stdout, то не подавлять этот вывод.

fab test:"путь_до_тестов" - запуск тестов из указанной папки.

где путь_до_тестов отсчитывается, начиная с папки src, т.е. если нужно запустить тесты графического интерфейса, то нужно выполнить команду:

fab test:"tests/gui"

Если нужно выполнить тесты из определенного файла, то:

fab test:"tests/gui/test_actioncontroller.py"

Если нужно выполнить тесты из определенного набора тестов (TestCase), то нужно выполнить команду наподобие:

fab test:"tests/gui/test_actioncontroller.py::ActionControllerTest"

Если нужно запустить определенный тест из определенного набора тестов (TestCase), то можно дополнительно передать имя теста:

fab test:"tests/gui/test_actioncontroller.py::ActionControllerTest::testTitles"