Exécuter des tests automatisés en utilisant Azurite

Découvrez comment écrire des tests automatisés par rapport aux points de terminaison privés pour Stockage Blob Azure en utilisant l’émulateur de stockage Azurite.

Exécuter des tests sur votre ordinateur local

  1. Installez la version la plus récente de Python.

  2. Installez Explorateur Stockage Azure.

  3. Installez et exécutez Azurite :

    Option 1 : Utilisez npm pour installer, puis exécuter Azurite localement.

    # 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 : Utilisez Docker pour exécuter Azurite.

    docker run -p 10000:10000 mcr.microsoft.com/azure-storage/azurite azurite-blob --blobHost 0.0.0.0
    
  4. Dans Explorateur Stockage Azure, sélectionnez Lier à un émulateur local.

    Capture d’écran d’Explorateur Stockage Azure se connectant à la source Stockage Azure.

  5. Indiquez un nom d’affichage et un numéro de port Blobs pour connecter Azurite et utiliser Explorateur Stockage Azure pour gérer le stockage blob local.

    Capture d’écran d’Explorateur Stockage Azure se liant à un émulateur local.

  6. Créer un environnement Python virtuel

    python -m venv .venv
    
  7. Créez un conteneur et initialisez les variables d’environnement. Utilisez un fichier PyTestconftest.py pour générer des tests. Voici un exemple de fichier conftest.py :

    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)
    

    Notes

    La valeur indiquée pour AZURE_STORAGE_CONNECTION_STRING est la valeur par défaut pour Azurite, il ne s’agit pas d’une clé privée.

  8. Installez les dépendances figurant dans un fichier requirements.txt.

    pip install -r requirements.txt
    
  9. Exécutez les tests :

    python -m pytest ./tests
    

Après avoir exécuté les tests, vous pouvez voir les fichiers dans le stockage blob Azurite en utilisant Explorateur Stockage Azure.

Capture d’écran d’Explorateur Stockage Azure montrant des fichiers générés par les tests.

Exécuter des tests sur Azure Pipelines

Après avoir exécuté les tests localement, assurez-vous que les tests passent sur Azure Pipelines. Utilisez une image Docker Azurite comme agent hébergé sur Azure, ou utilisez npm pour installer Azurite. L’exemple d’Azure Pipelines suivant utilise npm pour installer 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

Après l’exécution des tests sur Azure Pipelines, une sortie semblable à celle-ci doit s’afficher :

Capture d’écran des résultats des tests d’Azure Pipelines.

Étapes suivantes