Тестирование 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"