Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Из этой статьи вы узнаете, как писать автоматические тесты частных конечных точек для Хранилища BLOB-объектов Azure с помощью эмулятора хранилища Azurite.
Как запускать тесты на локальном компьютере
Установите последнюю версию Python
Установите Обозреватель службы хранилища Azure
Установите и запустите Azurite одним из указанных ниже способов.
Вариант 1. Используйте npm, чтобы установить Azurite, а затем запустите его локально
# Install Azurite npm install -g azurite # Create an Azurite directory mkdir c:\azurite # Launch Azurite locally azurite --silent --location c:\azurite --debug c:\azurite\debug.logВариант 2. Запустите Azurite с помощью Docker
docker run -p 10000:10000 mcr.microsoft.com/azure-storage/azurite azurite-blob --blobHost 0.0.0.0В Обозревателе службы хранилища Azure выберите Attach to a local emulator (Подключить к локальному эмулятору)
Укажите Отображаемое имя и номер порта BLOB-объектов, чтобы подключиться к Azurite и управлять локальным хранилищем BLOB-объектов с помощью Обозревателя службы хранилища Azure.
Создание виртуального окружения Python
python -m venv .venvСоздайте контейнер и инициализируйте переменные среды. Чтобы создавать тесты, используйте файл PyTestconftest.py. Ниже приведен пример файла conftest.py.
from azure.storage.blob import BlobServiceClient import os def pytest_generate_tests(metafunc): os.environ['AZURE_STORAGE_CONNECTION_STRING'] = 'DefaultEndpointsProtocol=http;AccountName=[name];AccountKey=[key];BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;' os.environ['STORAGE_CONTAINER'] = 'test-container' # Create a container for Azurite for the first run blob_service_client = BlobServiceClient.from_connection_string(os.environ.get("AZURE_STORAGE_CONNECTION_STRING")) try: blob_service_client.create_container(os.environ.get("STORAGE_CONTAINER")) except Exception as e: print(e)Примечание.
Значение
AZURE_STORAGE_CONNECTION_STRINGустанавливается по умолчанию для Azurite. Это не закрытый ключ.Установите зависимости, перечисленные в файле requirements.txt
pip install -r requirements.txtЗапустите тесты.
python -m pytest ./tests
После выполнения тестов вы можете увидеть файлы в хранилище объектов BLOB Azurite с помощью Обозревателя хранилища Azure.
Выполнение тестов в Azure Pipelines
Выполните тесты локально, а затем запустите их в Azure Pipelines. Используйте образ Docker Azurite как размещенный агент в Azure или установите Azurite с помощью npm. В следующем примере Azure Pipelines используется npm для установки Azurite.
trigger:
- master
steps:
- task: UsePythonVersion@0
displayName: 'Use Python 3.7'
inputs:
versionSpec: 3.7
- bash: |
pip install -r requirements_tests.txt
displayName: 'Setup requirements for tests'
- bash: |
sudo npm install -g azurite
sudo mkdir azurite
sudo azurite --silent --location azurite --debug azurite\debug.log &
displayName: 'Install and Run Azurite'
- bash: |
python -m pytest --junit-xml=unit_tests_report.xml --cov=tests --cov-report=html --cov-report=xml ./tests
displayName: 'Run Tests'
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
reportDirectory: '$(System.DefaultWorkingDirectory)/**/htmlcov'
- task: PublishTestResults@2
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: '**/*_tests_report.xml'
failTaskOnFailedTests: true
После выполнения тестов в Azure Pipelines должен появится подобный результат: