Как запустить функциональный и интеграционный тесты на локальном компьютере
Запустите тесты, используя Python или контейнер Docker (используя образ edgex-taf-common). Ваш выбор будет зависеть от того, есть ли у вас необходимые библиотеки Robot Framework или вы готовы их установить. Если вы предпочитаете не устанавливать библиотеки для тестирования, возможно, предпочтительнее использовать контейнер edgex-taf-common.
Предварительные требования Клонируйте проект edgex-taf из EdgeX Foundry в качестве шаблона:
cd ${HOME}
git clone https://github.com/edgexfoundry/edgex-taf.git
Использование контейнера Docker для запуска тестов
# Required variables
export WORK_DIR=${HOME}/edgex-taf
export REGISTRY_SERVICE=${REGISTRY_SERVICE}
export USE_DB=${TEST_DB}
Использование сценария оболочки для запуска тестов займёт некоторое время. Он содержит этапы развёртывания, запуска тестов и завершения работы.
# Аргументы для run-tests.sh
${ARCH}: x86_64 | arm64
${SECURITY_SERVICE_NEEDED}: false | true
${REGISTRY_SERVICE}: Consul | Keeper
${TEST_STRATEGY}: functional-test | integration-test
${TEST_SERVICE}: all (default) | device-virtual | device-modbus | ${directory} under TAF/testScenarios/functionalTest/API | mqtt (integration-test) | redis (integration-test)
${DEPLOY_SERVICES}: no-deployment(Если службы edgex развёрнуты на месте, используйте «no-deployment». В противном случае оставьте его пустым.)
${TEST_DB}: postgres | redis
cd ${WORK_DIR}/TAF/utils/scripts/docker
sh run-tests.sh ${ARCH} ${SECURITY_SERVICE_NEEDED} ${TEST_STRATEGY} ${TEST_SERVICE} ${DEPLOY_SERVICES}
# Если используется x86_64, нет необходимости в безопасности, выберите функциональный тест, выберите «api» для test_service и службы edgex развернуты на месте, это должно быть:
например, sh run-tests.sh x86_64 false functional-test api no-deployment
# Если используется x86_64, нет необходимости в безопасности, примите для интеграционного теста, выберите «mqtt» для test_service и службы edgex не развёрнуты на месте, это должно быть:
например, sh run-tests.sh x86_64 false integration-test mqtt
Откройте файл отчёта в браузере: ${WORK_DIR}/TAF/testArtifacts/reports/cp-edgex/api-test.html
Запуск тестов с использованием Python Пожалуйста, удалите каталог ${WORK_DIR}/TAF/testArtifacts/reports/edgex с помощью sudo, если он существует.
sudo apt-get install python3-pip
cd ${HOME}/edgex-taf
git clone https://github.com/edgexfoundry/edgex-taf-common.git
# Установите зависимость lib
pip3 install -r ./edgex-taf-common/requirements.txt
# Установите edgex-taf-common как lib
pip3 install ./edgex-taf-common
# Аргументы для get-compose-file.sh
${ARCH}: x86_64 | arm64
${USE_SECURITY}: - (false) | -security- (true)
${USE_SHA1}: main
${TEST_STRATEGY}: functional-test | integration-test
# Получите последний файл docker-compose
cd ${HOME}/edgex-taf/TAF/utils/scripts/docker
sh get-compose-file.sh ${USE_ARCH} ${USE_SECURITY} ${USE_SHA1} ${TEST_STRATEGY}
# например, sh get-compose-file.sh x86_64 - main functional-test
# Экспортируйте следующие переменные среды.
export WORK_DIR=${HOME}/edgex-taf
export SECURITY_SERVICE_NEEDED=false
export COMPOSE_IMAGE=docker:26.0.1
Просмотрите отчёт о тесте после завершения команды Python, иначе отчёт будет переопределён после выполнения следующей команды. Откройте файл отчёта в браузере: ${WORK_DIR}/TAF/testArtifacts/reports/cp-edgex/api-test.html.
Измените каталог на ${HOME}/edgex-taf
Разверните edgex: Пропущено, если службы edgex уже развёрнуты
# Этот шаг может занять некоторое время, если образы edgex отсутствуют на машине
python3 -m TUC --exclude Skipped --include deploy-base-service -u deploy.robot -p default
Запустите тест
# ${ServiceDir}: Пожалуйста, используйте имя каталога под TAF/testScenarios/functionalTest/API
# Перед запуском службы, пожалуйста, экспортируйте следующие переменные.
export EDGEX_SECURITY_SECRET_STORE=false
export REGISTRY_SERVICE=${REGISTRY_SERVICE}
# Выполните тестовую команду
python3 -m TUC --exclude Skipped -u functionalTest/API/${ServiceDir} -p default
Для службы APP:
# Требуется Consul. Скрипты будут изменять конфигурацию службы APP.
# Использовано 2 профиля, функциональные тесты и http-экспорт.
# Перед запуском службы APP, пожалуйста, экспортируйте следующие переменные.
export EDGEX_SECURY_SECRET_STORE=false
export REGISTRY_SERVICE=${REGISTRY_SERVICE}
export SERVICE_PORT=59705 (для функциональных тестов)
export SERVICE_PORT=59704 (для http-экспорта)
# Выполнить тестовую команду
export SECURITY_SERVICE_NEEDED=false # Иначе получите ошибку ErrSecretsPOST004.
python3 -m TUC --exclude Skipped -u functionalTest/API/app-service -p default
Служба устройства:
# Перед запуском службы устройства, пожалуйста, экспортируйте следующие переменные.
export EDGEX_SECURITY_SECRET_STORE=false
export REGISTRY_SERVICE=${REGISTRY_SERVICE}
# Измените значение ProfilesDir в configuration.toml под ${HOME}/edgex-taf/TAF/config/${profile}
ProfilesDir = ${HOME}/edgex-taf/TAF/config/${profile}
# Запустите службу устройства с параметром configDir
--configDir=${HOME}/edgex-taf/TAF/config/${profile}
# Выполните тестовую команду
python3 -m TUC --exclude Skipped -u functionalTest/device-service -p ${profile}
# ${profile}: Используйте имя каталога под TAF/config, которое зависит от того, какую службу нужно протестировать. Примеры: device-virtual или device-modbus
Поддерживается только развёртывание служб edgex через файл docker-compose.
Запустите тест с MQTT-шиной:
python3 -m TUC --exclude Skipped --include mqtt-bus -u deploy.robot -p default
python3 -m TUC --exclude Skipped --include MessageBus=MQTT -u integrationTest -p device-virtual --name MQTT-bus
Запустите тест с Redis-шиной:
python3 -m TUC --exclude Skipped --include redis-bus -u deploy.robot -p default
python3 -m TUC --exclude Skilled --include MessageBus=REDIS -u integrationTest -p device-virtual --name REDIS-bus
Завершение работы edgex:
python3 -m TUC --exclude Skipped --include shutdown-edgex -u shutdown.robot -p default
Пример на уровне набора тестов
Пример уровня тестового случая
Пример ключевого уровня
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )