Compartir a través de


Ejecución de pruebas automatizadas mediante Azurite

Obtenga información sobre cómo escribir pruebas automatizadas en puntos de conexión privados para Azure Blob Storage mediante el emulador de almacenamiento de Azurite.

Ejecución de pruebas en el equipo local

  1. Instale la última versión de Python.

  2. Instale el Explorador de Azure Storage.

  3. Instale y ejecute Azurite:

    Opción 1: Utilice npm para instalar y luego ejecutar Azurite localmente.

    # 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
    

    Opción 2: Use Docker para ejecutar Azurite.

    docker run -p 10000:10000 mcr.microsoft.com/azure-storage/azurite azurite-blob --blobHost 0.0.0.0
    
  4. En el Explorador de Azure Storage, seleccione Vincular un emulador local.

    Captura de pantalla del Explorador de Azure Storage conectándose al origen de Azure Storage.

  5. Proporcione un nombre para mostrar y un número de puerto de blobs para conectar Azurite y utilizar el Explorador de Azure Storage para administrar el almacenamiento local de blobs.

    Captura de pantalla del Explorador de Azure Storage vinculándose a un emulador local.

  6. Creación de un entorno de Python virtual

    python -m venv .venv
    
  7. Cree un contenedor e inicialice las variables de entorno. Utilice un archivo PyTest conftest.py para generar pruebas. Este es un ejemplo de un archivo 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)
    

    Nota:

    El valor mostrado para AZURE_STORAGE_CONNECTION_STRING es el valor predeterminado de Azurite, no es una clave privada.

  8. Instale las dependencias enumeradas en un archivo requirements.txt.

    pip install -r requirements.txt
    
  9. Ejecute las pruebas:

    python -m pytest ./tests
    

Después de ejecutar las pruebas, puede ver los archivos en Azurite Blob Storage mediante el Explorador de Azure Storage.

Captura de pantalla del Explorador de Azure Storage mostrando los archivos generados por las pruebas.

Ejecución de pruebas en Azure Pipelines

Después de ejecutar las pruebas localmente, asegúrese de que se superan en Azure Pipelines. Use una imagen de Azurite de Docker como agente hospedado en Azure, o use npm para instalar Azurite. En el siguiente ejemplo de Azure Pipelines se usa npm para instalar 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

Después de ejecutar las pruebas de Azure Pipelines, debería ver una salida similar a la siguiente:

Captura de pantalla de los resultados de la prueba de Azure Pipelines.

Pasos siguientes