在今天的文章中,我們將重點介紹如何在 Azure DevOps Pipeline 中整合多階段測試(單元測試、整合測試、端到端測試)。藉由自動化這些測試流程,我們可以確保每個開發階段的程式碼變更都得到充分的驗證,並確保應用程式能夠正常運行。
多階段測試能幫助我們:
在這一部分,我們將展示如何撰寫 YAML 文件來實現多階段測試的自動化,包括如何安裝 Docker Compose 並規定測試執行順序。
可以看昨天的文章都有~
your_project/
│
├── app.py # 應用程式主文件
├── test_app.py # 單元測試腳本
├── test_integration.py # 整合測試腳本
├── test_e2e.py # 端到端測試腳本
├── Dockerfile # 應用程式的 Dockerfile
├── docker-compose.yml # Docker Compose 配置文件(整合測試用)
├── docker-compose-e2e.yml # Docker Compose 配置文件(端到端測試用)
└── requirements.txt
以下是一個完整的 Azure Pipelines YAML 文件範例,我們將針對 單元測試、整合測試 和 端到端測試 分別設置不同的階段,並確保執行順序從單元測試到端到端測試。
trigger:
branches:
include:
- main
pool:
vmImage: 'ubuntu-latest'
stages:
- stage: Test
displayName: '測試階段'
jobs:
- job: UnitTests
displayName: '單元測試'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.x'
displayName: '設定 Python 版本'
- script: |
sudo apt-get update
sudo apt-get install -y docker-compose
displayName: '安裝 Docker Compose'
- script: |
python -m pip install --upgrade pip
pip install -r requirements.txt
displayName: '安裝依賴'
- script: |
python -m unittest test_app.py
displayName: '執行單元測試'
- job: IntegrationTests
displayName: '整合測試'
steps:
- script: |
sudo apt-get update
sudo apt-get install -y docker-compose
displayName: '安裝 Docker Compose'
- script: |
docker-compose up --build -d
displayName: '啟動整合測試環境'
- script: |
docker-compose exec app python -m unittest test_integration.py
displayName: '執行整合測試'
- script: |
docker-compose down
displayName: '停止整合測試環境'
- job: EndToEndTests
displayName: '端到端測試'
steps:
- script: |
sudo apt-get update
sudo apt-get install -y docker-compose
displayName: '安裝 Docker Compose'
- script: |
docker-compose -f docker-compose-e2e.yml up --build -d
displayName: '啟動端到端測試環境'
- script: |
docker-compose
unittest
框架執行單元測試。這些測試驗證應用的最小單元(如函數)是否運行正常。docker-compose
啟動整合測試環境,並執行測試腳本。在測試結束後,我們關閉測試環境。dependsOn
關鍵字規定了各階段的執行順序。
IntegrationTests
)會在 單元測試(UnitTests
)成功後執行。EndToEndTests
)會在 整合測試 成功後執行。docker-compose up --build -d
會啟動測試環境,並在所有測試結束後,使用 docker-compose down
停止並刪除容器。azure-pipelines.yml
。main
分支時,Azure Pipelines 將自動執行這個 Pipeline,從 單元測試 到 端到端測試 按照定義的順序依次執行。可以參考Day05 - 使用 Azure DevOps Pipelines 持續集成 (CI)的步驟~
通過這篇文章,我們學習了如何在 Azure DevOps Pipeline 中實現多階段測試的自動化,並規定了測試執行的順序。這樣的設置不僅提升了測試效率,也讓程式碼的每個部分都能得到妥善驗證!