Tox Ansible#
Утилита Tox Ansible предназначена для упрощения тестирования коллекций Ansible.
Вызов утилиты имеет следующий вид:
tox <command> [<arguments>]
Здесь:
<command> – команда;
<arguments> – аргументы команды.
Для понимания принципов работы утилиты обратитесь к ее описанию.
Команды#
При запуске Tox Ansible можно использовать следующие команды.
run
#
Эта основная команда для запуска тестовых окружений.
Синтаксис команды:
tox run [-h, --colored, --exit-and-dump-after, -c, --workdir,
--root, --runner, -v, -q, --result-json, --hashseed, --discover,
--list-dependencies, --no-list-dependencies, -e, -m, -f, --skip-env,
-s, -n, -b, --installpkg, --develop, --no-recreate-pkg,
--skip-pkg-install, --version, --no-provision,
--no-recreate-provision, -r, -x]
Подробное описание аргументов команды см. ниже.
run-parallel
#
Эта команда запускает несколько тестовых окружений одновременно, что ускоряет выполнение тестов.
Синтаксис команды:
tox run-parallel [-h, --colored,, --exit-and-dump-after, -c,
--workdir, --root, --runner, -v, -q, --result-json,
--hashseed, --discover,--list-dependencies,
--no-list-dependencies, -e, -m, -f, --skip-env, -s, -n, -b,
--installpkg, --develop, --no-recreate-pkg,
--skip-pkg-install, -p, -o, --parallel-no-spinner,
--version, --no-provision, --no-recreate-provision, -r, -x]
Подробное описание аргументов команды см. ниже.
depends
#
Эта команда используется для визуализации зависимостей между окружениями. Для ее использования в файле настроек должны быть указаны зависимости.
Синтаксис команды:
tox depends [-h, --colored, --exit-and-dump-after, -c,
--workdir, --root, --runner, -v, -q, --result-json,
--hashseed, --discover, --list-dependencies,
--no-list-dependencies, --version, --no-provision,
--no-recreate-provision, -r, -x]
Подробное описание аргументов команды см. ниже.
list
#
Эта команда выводит все доступные окружения, определенные в файле настроек.
Синтаксис команды:
tox list [-h, --colored, --exit-and-dump-after, -c, --workdir,
--root, --runner, -v, -q, --result-json, --hashseed, --discover,
--list-dependencies, --no-list-dependencies, --no-desc, -m, -f,
--skip-env, -d, --version, --no-provision, --no-recreate-provision,
-r, -x]
Подробное описание аргументов команды см. ниже.
devenv
#
Эта команда создает окружение разработки и включает специфичные параметры для этого процесса.
Синтаксис команды:
tox devenv [-h, --colored, --exit-and-dump-after, -c,
--workdir, --root, --runner, -v, -q, --result-json,
--hashseed, --discover, --list-dependencies,
--no-list-dependencies, -e, --skip-env, --no-recreate-pkg,
--version, --no-provision, --no-recreate-provision, -r, -x]
Подробное описание аргументов команды см. ниже.
config
#
Эта команда показывает настройки Tox.
Синтаксис команды:
tox config [-h, --colored, --exit-and-dump-after, -c,
--workdir, --root, --runner, -v, -q, --result-json,
--hashseed, --discover, --list-dependencies,
--no-list-dependencies, -k, --core, -e, -m, -f, --skip-env,
-s, --develop, --no-recreate-pkg, --version, --no-provision,
--no-recreate-provision, -r, -x]
Подробное описание аргументов команды см. ниже.
quickstart
#
Эта команда создает минимальный файл настроек.
Синтаксис команды:
tox quickstart [-h, --colored, --exit-and-dump-after, -c,
--workdir, --root, --runner, -v, -q, --result-json,
--hashseed, --discover, --list-dependencies,
--no-list-dependencies, --version, --no-provision,
--no-recreate-provision, -r, -x] [root]
Подробное описание аргументов команды см. ниже.
- [root]#
Путь к каталогу, в котором необходимо создать файл настроек.
exec
#
Эта команда позволяет запустить любую команду внутри виртуального окружения.
Синтаксис команды:
tox exec [-h, --colored, --exit-and-dump-after, -c, --workdir,
--root, --runner, -v, -q, --result-json, --hashseed, --discover,
--list-dependencies, --no-list-dependencies, -e, --skip-env, -s, -n,
-b, --installpkg, --develop, --no-recreate-pkg, --skip-pkg-install,
--version, --no-provision, --no-recreate-provision, -r, -x]
Подробное описание аргументов команды см. ниже.
Аргументы команды#
При запуске Tox Ansible можно использовать следующие аргументы:
- -h#
Вывод справочной информации.
- --colored {yes,no}#
Использование цветного вывода:
yes
– включить цветной вывод (по умолчанию);no
– отключить цветной вывод.
- --exit-and-dump-after <seconds>#
Остановка выполнения тестов через определенное количество секунд <seconds>. При значении
0
(по умолчанию) выполнение тестов не останавливается до их завершения.
- -c file#
Путь к файлу настроек.
- --workdir dir#
Рабочий каталог.
Значение по умолчанию – путь к каталогу с файлом настроек.
- --root dir#
Корневой каталог проекта.
Значение по умолчанию – путь к каталогу с файлом настроек.
- --runner {virtualenv}#
Механизм создания виртуальных окружений.
- -v#
Повышение уровня детализации вывода.
- -q#
Уменьшение уровня детализации вывода.
- --result-json path#
Сохранение результатов выполнения в JSON-файл.
- --hashseed SEED#
Установка фиксированного значения для переменной
PYTHONHASHSEED
.
- --discover path [path ...]#
Интерпретаторы Python, которые необходимо использовать при тестировании.
- --list-dependencies#
Вывод списка зависимостей, установленных в окружении.
- --no-list-dependencies#
Запрет вывода списка зависимостей, установленных в окружении.
- -s [v], --skip-missing-interpreters [v]#
Поведение утилиты при отсутствии в системе интерпретатора Python, который указан в файле настроек:
true
– пропустить тестовые окружения, для которых не найден соответствующий интерпретатор Python, и продолжить выполнение без фиксации ошибки;false
– завершить работу с сообщением об ошибке;config
– использовать настройкуskip_missing_interpreters
из файла настроек (по умолчанию).
- -n, --notest#
Не запускать тестовые команды.
- -b, --pkg-only, --sdistonly#
Создание дистрибутивного пакета проекта установки в тестовое окружение.
- --installpkg INSTALL_PKG#
Дистрибутивный пакет, который необходимо установить в тестовое окружение.
- --develop#
Установка дистрибутивного пакета в режиме разработки.
- --no-recreate-pkg#
Запрет пересоздания окружения, в котором собирается дистрибутивный пакет.
- --skip-pkg-install#
Не устанавливать дистрибутив в тестовом окружении.
- --version#
Вывод информации о версии Tox Ansible.
- --no-provision [REQ_JSON]#
Отключение стадии подготовки. Если указан путь к файлу, Tox Ansible не будет создавать виртуальные окружения, но запишет метаданные в формате JSON в указанный файл.
- --no-recreate-provision#
Отмена действия аргумента
-r
.
- -r#
Пересоздание виртуальных окружений при каждом запуске.
- -x OVERRIDE#
Переопределение настроек для конкретного окружения.
- --matrix-scope {all,sanity,integration,unit}#
Определение тестов, которые будут включены в матрицу для GitHub Actions:
all
– все тесты;sanity
– тесты для проверки работоспособности;integration
– интеграционные тесты;unit
– модульные тесты.
- --gh-matrix#
Генерация матрицы для GitHub Actions.
- --ansible#
Включение поддержки тестирования Ansible.
- -e ENV#
Окружение для проведения тестирования.
- -m label [label ...]#
Использование окружений с определенными метками.
- -f factor [factor ...]#
Использование окружений с определенными факторами (частями названий).
- --skip-env <re>#
Исключение из тестирования окружений, названия которых совпадают с заданным регулярным выражением <re>.
- -d#
Вывод только окружений по умолчанию.
- --no-desc#
Вывод окружений без их описания.
- -p VAL#
Количество параллельных процессов при выполнении тестов.
- -o, --parallel-live#
Вывод результатов тестов в реальном времени.
- --parallel-no-spinner#
Отключение анимации загрузки.
- -k key [key ...]#
Вывод только указанных параметров конфигурации.
- --core#
Вывод базовых параметров конфигурации.
Файл настроек#
Для настройки Tox Ansible используется файл tox-ansible.ini
.
В нем указываются параметры окружений и используемых средств тестирования.
Основные настройки#
[tox]
это основная секция файла настроек, в ней указываются следующие параметры:
- envlist#
Список окружений, которые будут созданы и запущены. Для названий окружений рекомендуется использовать следующий шаблон:
<type>-py<VERSION>-ansible<VERSION>
Здесь:
<type> – тип теста;
py<VERSION> – версия Python, которая будет использоваться в окружении;
ansible<VERSION> – версия Ansible или Ansible Core, которая будет установлена.
Пример заполнения:
[tox] envlist = unit-py37-ansible2.9, sanity-py37-ansible2.10
- skip-missing-interpreters#
Поведение утилиты при отсутствии в системе интерпретатора Python, который указан в файле настроек:
true
– пропустить тестовые окружения, для которых не найден соответствующий интерпретатор Python, и продолжить выполнение без фиксации ошибки;false
– завершить работу с ошибкой.
Пример заполнения:
[tox] skip_missing_interpreters = true
Настройка окружений#
Настройки окружений в Tox Ansible делятся на две категории:
глобальные – применяются ко всем окружениям и задаются в секции
[testenv]
;индивидуальные – задаются для каждого тестового окружения отдельно в секциях вида
[testenv:<env_name>]
.
Поддерживаются следующие параметры:
- allowlist_externals#
Список разрешенных системных команд.
Пример заполнения:
allowlist_externals = echo
- basepython:#
Версия Python, которую необходимо использовать.
Пример заполнения:
[testenv] basepython = py37: python3.7
В данном примере окружения с префиксом
py37
будут использовать Python 3.7.
- deps#
Зависимости, которые необходимо установить.
Пример заполнения:
[testenv] deps = ansible2.9: ansible==2.9.*
В данном примере Python-пакет
ansible
версии2.9.*
будет установлен в окружениях, названия которых содержат строкуansible2.9
.
- commands#
Команды, которые необходимо выполнить в окружении.
Пример заполнения:
[testenv] commands = echo "Тип теста: {envname}, версия Python: {basepython}, версия Ansible: {deps}"
В результате выполнения данной команды будет выведена информация об окружении.