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}"

В результате выполнения данной команды будет выведена информация об окружении.