Automatizált tesztek futtatása az Azurite használatával

Megtudhatja, hogyan írhat automatizált teszteket az Azure Blob Storage privát végpontjaira az Azurite Storage emulátor használatával.

Tesztek futtatása a helyi gépen

  1. A Python legújabb verziójának telepítése

  2. Az Azure Storage Explorer telepítése

  3. Az Azurite telepítése és futtatása:

    1. lehetőség: A telepítéshez használja az npm-et, majd futtassa helyileg az Azurite-ot

    # 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
    

    2. lehetőség: Az Azurite futtatása a Docker használatával

    docker run -p 10000:10000 mcr.microsoft.com/azure-storage/azurite azurite-blob --blobHost 0.0.0.0
    
  4. Az Azure Storage Explorerben válassza a Csatolás helyi emulátorhoz lehetőséget

    Képernyőkép az Azure Storage Explorer Azure Storage-forráshoz való csatlakozásáról.

  5. Adjon meg egy megjelenítési nevet és Blobs portszámot az Azurite-hoz való csatlakozáshoz, és használja az "Azure Storage Explorer"-t a helyi blokk-tárhely kezeléséhez.

    Képernyőkép az Azure Storage Explorerről, amely egy helyi emulátorhoz van csatolva.

  6. Virtuális Python-környezet létrehozása

    python -m venv .venv
    
  7. Hozzon létre egy tárolót, és inicializálja a környezeti változókat. Tesztek létrehozásához használjon PyTest-conftest.py fájlt. Íme egy példa egy conftest.py fájlra:

    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)
    

    Feljegyzés

    A megjelenített AZURE_STORAGE_CONNECTION_STRING érték az Azurite alapértelmezett értéke, nem titkos kulcs.

  8. Requirements.txt fájlban felsorolt függőségek telepítése

    pip install -r requirements.txt
    
  9. Tesztek futtatása:

    python -m pytest ./tests
    

A tesztek futtatása után az Azure Storage Explorerrel láthatja a fájlokat az Azurite blobtárolóban.

Képernyőkép az Azure Storage Explorerről, amelyen a tesztek által létrehozott fájlok láthatók.

Tesztek futtatása az Azure Pipelinesban

Miután helyileg futtatta a teszteket, győződjön meg arról, hogy a tesztek átjutnak az Azure Pipelineson. Docker Azurite képet használjon hosztolt ügynökként az Azure-ban, vagy használja az npm-et az Azurite telepítéséhez. Az alábbi Azure Pipelines-példa az npm használatával telepíti az Azurite-ot.

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

Az Azure Pipelines-tesztek futtatása után az alábbihoz hasonló kimenetnek kell megjelennie:

Képernyőkép az Azure Pipelines tesztelési eredményeiről.

Következő lépések