Dela via


Köra automatiserade tester med hjälp av Azurite

Lär dig hur du skriver automatiserade tester mot privata slutpunkter för Azure Blob Storage med hjälp av Azurite Storage-emulatorn.

Köra tester på din lokala dator

  1. Installera den senaste versionen av Python

  2. Installera Azure Storage Explorer

  3. Installera och kör Azurite:

    Alternativ 1: Använd npm för att installera och kör sedan Azurite lokalt

    # 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
    

    Alternativ 2: Använda Docker för att köra Azurite

    docker run -p 10000:10000 mcr.microsoft.com/azure-storage/azurite azurite-blob --blobHost 0.0.0.0
    
  4. I Azure Storage Explorer väljer du Anslut till en lokal emulator

    Skärmbild av Azure Storage Explorer som ansluter till Azure Storage-källa.

  5. Ange ett visningsnamn och blobportnummer för att ansluta Azurite och använda Azure Storage Explorer för att hantera lokal bloblagring.

    Skärmbild av azure storage explorer-anslutning till en lokal emulator.

  6. Skapa en virtuell Python-miljö

    python -m venv .venv
    
  7. Skapa en container och initiera miljövariabler. Använd en PyTestconftest.py-fil för att generera tester. Här är ett exempel på en conftest.py fil:

    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)
    

    Note

    Värdet som visas för AZURE_STORAGE_CONNECTION_STRING är standardvärdet för Azurite, det är inte en privat nyckel.

  8. Installera beroenden som anges i en requirements.txt-fil

    pip install -r requirements.txt
    
  9. Kör tester:

    python -m pytest ./tests
    

När du har kört tester kan du se filerna i Azurite Blob Storage med hjälp av Azure Storage Explorer.

Skärmbild av Azure Storage Explorer som visar filer som genererats av testerna.

Köra tester på Azure Pipelines

När du har kört tester lokalt kontrollerar du att testerna skickas på Azure Pipelines. Använd en Docker Azurite-avbildning som värdbaserad agent i Azure eller använd npm för att installera Azurite. I följande Azure Pipelines-exempel används npm för att installera 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

När du har kört Azure Pipelines-testerna bör du se utdata som liknar följande:

Skärmbild av Testresultat för Azure Pipelines.

Nästa steg