首页 > 解决方案 > 如何使用服务原则作为默认身份验证机制在 Azure DevOps CI 管道中运行 pytest(单元测试)

问题描述

我想在 CI 管道 azure devops 期间测试以下代码片段,它在环境变量的帮助下在我的本地机器上运行良好

import os
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient

def get_secret():
   # Acquire the resource URL
   vault_url = os.environ["KEY_VAULT_URL"]

   # Acquire a credential object
   credential = DefaultAzureCredential()

   # Acquire a client object
   secret_client = SecretClient(vault_url=vault_url, credential=credential)

   # Attempt to perform an operation
   retrieved_secret = secret_client.get_secret("secret-name-01")

   # Return secret value
   return retrieved_secret

在我的 test_file.py

def test_secret():
    assert get_secret() == 'myvalue'

我在 Azure DevOps 上的 CI 管道看起来像

trigger:
- master

pool:
 vmImage: ubuntu-latest
strategy:
 matrix:
  Python37:
    python.version: '3.7'
  Python38:
    python.version: '3.8'

steps:
- task: UsePythonVersion@0
inputs:
   versionSpec: '$(python.version)'
   displayName: 'Use Python $(python.version)'

- script: |
   python -m pip install --upgrade pip
   pip install -r requirements.txt
   displayName: 'Install dependencies'

- script: |
   pip install pytest pytest-azurepipelines
   displayName: 'install test Apis'

- task: AzureCLI@1
   displayName: 'Running Unit Tests'
   inputs:
     azureSubscription: 'My Service Principle'
     scriptLocation: 'inlineScript'
     inlineScript: 'pytest /test/'

花了很长时间后,它被中止并出现以下错误

src/test/test_app.py ./home/vsts/work/_temp/azureclitaskscript1616080518256.sh:第 1 行:1846 中止(核心转储)pytest src/test/

##[error]Script failed with error: Error: The process '/usr/bin/bash' failed with exit code 134

为了修复它,我需要进行哪些更改?提前致谢

标签: python-3.xazureunit-testingcontinuous-integrationdefaultazurecredential

解决方案


推荐阅读