Jupyter AI
📢 新上线功能: 最新题库(点击体验),帮助大家更好实践编程和 AI 练习题!

22 持续集成与自动化测试之集成自动化测试到CI工具

📅发表日期: 2024-08-11

🏷️分类: Python测试

👁️阅读量: 0

在上一篇文章中,我们探讨了持续集成(CI)的基本概念以及它在现代软件开发中的重要性。本篇将深入探讨如何将自动化测试集成到CI工具中,以提升开发效率和软件质量。我们将以流行的CI工具为例,提供实际的集成步骤和代码示例,帮助你快速上手。

CI工具的选择

现今有多种CI工具可以选择,例如:

  • Jenkins
  • GitHub Actions
  • GitLab CI
  • Travis CI
  • CircleCI

本文将以 GitHub Actions 为例来说明如何将自动化测试集成到CI流程中,因为它与GitHub代码库的密切集成,使得配置和使用非常方便。

自动化测试的环境准备

为集成自动化测试到CI工具,首先,我们需要一个测试环境。以Python项目为例,通常的测试框架有:

  • unittest
  • pytest

在开始之前,请确保你的项目中已安装所需的测试框架。你可以使用以下命令来安装 pytest

pip install pytest

并在项目根目录中创建一个测试文件,例如 test_sample.py

# test_sample.py
def test_add():
    assert 1 + 1 == 2

def test_subtract():
    assert 2 - 1 == 1

集成到 GitHub Actions

接下来,我们将创建一个 GitHub Actions 的工作流文件来自动化执行这些测试。

  1. 在你的 GitHub 项目中,创建一个 .github/workflows 文件夹。
  2. 在该文件夹中创建一个名为 ci.yml 的文件。

ci.yml 文件中,添加以下内容:

name: CI

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: '3.8'

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install pytest

    - name: Run tests
      run: |
        pytest

代码解析

  • name: CI:定义工作流的名称。
  • on: [push, pull_request]:当代码被推送到主分支或有拉取请求时触发工作流。
  • jobs 部分定义工作流中的任务。其中 test 任务会在一个 ubuntu-latest 的虚拟环境中运行。
  • steps 列表定义任务的具体步骤:
    • 使用 actions/checkout@v2 检出代码。
    • 使用 actions/setup-python@v2 设置 Python 环境。
    • 安装 pytest 进行测试。
    • 运行 pytest 执行测试。

提交代码并观察结果

提交以上变更:

git add .
git commit -m "Add CI workflow for automated testing"
git push origin main

在推送代码后,GitHub Actions 将自动执行上述工作流。你可以在GitHub项目的“Actions”选项卡中查看执行状态与日志。

尝试复杂场景

如果你的自动化测试需要使用特定的环境或者依赖,可以在 Install dependencies 步骤中添加其他命令,或者创建一个 requirements.txt 文件来更好地管理依赖,例如:

pip freeze > requirements.txt

然后在 GitHub Actions 中添加以下步骤:

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt

结论

通过将 pytest 测试集成到 GitHub Actions,我们成功实现了自动化测试的持续集成。这种方法能够确保每次代码的变更都经过验证,提高了软件质量,减少了手动测试的工作量。

在下一篇文章中,我们将讨论 自动化测试的最佳实践,帮助你更深入地理解如何编写和管理高效的自动化测试代码。

💬 评论

暂无评论