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

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

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

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

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

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

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

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

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

Параметры команды 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:"test/guitests"

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

fab test:"test/guitests/test_actioncontroller.py"

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

fab test:"test/guitests/test_actioncontroller.py::ActionControllerTest"

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

fab test:"test/guitests/test_actioncontroller.py::ActionControllerTest::testTitles"