Ausführen automatisierter Tests mithilfe von Azurite
Erfahren Sie, wie Sie mithilfe von Azurite automatisierte Tests für private Endpunkte für Azure BLOB Storage Emulator schreiben.
Ausführen von Tests auf Ihrem lokalen Computer aus
Installieren der aktuellen Version von Python
Installieren von Azure Storage-Explorer
Installieren und Ausführen von Azurite:
Option 1: Verwenden von npm zum Installieren und anschließendes Ausführen von 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
Option 2: Verwenden von Docker zum Ausführen von Azurite
docker run -p 10000:10000 mcr.microsoft.com/azure-storage/azurite azurite-blob --blobHost 0.0.0.0
Wählen Sie im Azure Storage Explorer die Option Anhängen an einen lokalen Emulator
Geben Sie einen Anzeigenamen und eine BLOB-Port-Nummer an, um eine Verbindung mit Azurite herzustellen, und verwenden Sie Azure Storage-Explorer, um den lokalen BLOB-Speicher zu verwalten.
Erstellen einer virtuellen Python-Umgebung
python -m venv .venv
Erstellen Sie einen Container, und initialisieren Sie Umgebungsvariablen. Verwenden Sie eine Pytestconftest.py-Datei, um Tests zu generieren. Hier ein Beispiel für eine conftest.py-Datei:
from azure.storage.blob import BlobServiceClient import os def pytest_generate_tests(metafunc): os.environ['AZURE_STORAGE_CONNECTION_STRING'] = 'DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;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)
Hinweis
Der für angezeigte Wert
AZURE_STORAGE_CONNECTION_STRING
ist der Standardwert für Azurite, es handelt sich nicht um einen privaten Schlüssel.Installieren von Abhängigkeiten, die in einer requirements.txt-Datei aufgelistet sind
pip install -r requirements.txt
Ausführen von Tests:
python -m pytest ./tests
Nachdem Sie Tests ausgeführt haben, können Sie die Dateien im Azurite BLOB-Speicher mit Azure Storage-Explorer anzeigen.
Ausführen von Tests auf Azure Pipelines
Stellen Sie nach dem lokalen Ausführen von Tests sicher, dass die Tests auf Azure Pipelinesbestanden werden. Verwenden Sie ein Docker Azurite-Image als gehosteten Agent in Azure, oder verwenden Sie npm zum Installieren von Azurite. Im folgenden Azure Pipelines-Beispiel wird npm zum Installieren von Azurite verwendet.
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
Nachdem Sie die Azure Pipelines-Tests ausgeführt haben, sollte eine Ausgabe ähnlich der folgenden angezeigt werden: