Compartilhar via


Executar testes automatizados usando o Azurite

Saiba como elaborar testes automatizados em pontos de extremidade privados para o Armazenamento de Blobs do Azure usando o emulador de armazenamento Azurite.

Executar testes no computador local

  1. Instale a versão mais recente do Python

  2. Instale o Gerenciador de Armazenamento do Azure

  3. Instalar e executar o Azurite:

    Opção 1: use o NPM para instalar e executar o 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
    

    Opção 2: use o Docker para executar o Azurite

    docker run -p 10000:10000 mcr.microsoft.com/azure-storage/azurite azurite-blob --blobHost 0.0.0.0
    
  4. No Gerenciador de Armazenamento do Azure, selecione Anexar a um emulador local

    Captura de tela do Gerenciador de Armazenamento do Azure se conectando à origem do Armazenamento do Azure.

  5. Forneça um Nome de exibição e um número de Porta de blobs para conectar o Azurite e usar o Gerenciador de Armazenamento do Azure no gerenciamento do armazenamento local de blobs.

    Captura de tela do Gerenciador de Armazenamento do Azure sendo anexado a um emulador local.

  6. Criar um ambiente virtual do Python

    python -m venv .venv
    
  7. Crie um contêiner e inicialize as variáveis de ambiente. Use um arquivo PyTest conftest.py para gerar testes. Veja um exemplo desse arquivo 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)
    

    Observação

    O valor mostrado para AZURE_STORAGE_CONNECTION_STRING é o valor padrão para o Azurite, não uma chave privada.

  8. Instalar dependências listadas em um arquivo requirements.txt

    pip install -r requirements.txt
    
  9. Executar testes:

    python -m pytest ./tests
    

Depois de executar os testes, os arquivos são exibidos no armazenamento de blobs do Azurite usando o Gerenciador de Armazenamento do Azure.

Captura de tela do Gerenciador de Armazenamento do Azure mostrando os arquivos gerados pelos testes.

Executar testes no Azure Pipelines

Depois de executar os testes localmente, verifique se eles foram aprovados no Azure Pipelines. Use uma imagem Docker do Azurite como um agente hospedado no Azure ou NPM para instalar o Azurite. O exemplo do Azure Pipelines a seguir usa o NPM para instalar o 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

Depois de executar os testes do Azure Pipelines, será exibida uma saída semelhante a esta:

Captura de tela dos resultados do teste do Azure Pipelines.

Próximas etapas