FastAPI的CI流水线怎么自动测端点,还能让Allure报告美到犯规?


url: /posts/eed6cd8985d9be0a4b092a7da38b3e0c/
title: FastAPI的CI流水线怎么自动测端点,还能让Allure报告美到犯规?
date: 2025-09-16T01:32:40+08:00
lastmod: 2025-09-16T01:32:40+08:00
author: cmdragon

summary:
持续集成(CI)是一种软件开发实践,开发人员频繁提交代码,CI工具自动触发构建和测试流程,以尽早发现错误。FastAPI项目通过CI保证类型安全、避免端点失效和一致性验证。GitHub Actions是常用的CI工具,通过Workflow、Job和Step定义CI流程。FastAPI的CI流水线包括代码拉取、Python环境设置、依赖安装、测试和Docker镜像构建。Allure测试报告框架生成可视化报告,支持结构化展示和跨平台兼容,与FastAPI的Pytest测试结合,通过Allure装饰器标记测试用例,生成并查看报告。

categories:

  • fastapi

tags:

  • FastAPI
  • 持续集成
  • GitHub Actions
  • CI流水线
  • Pytest
  • Allure
  • 测试报告

cmdragon_cn.png

扫描二维码关注或者微信搜一搜:编程智域 前端至全栈交流与成长

发现1000+提升效率与开发的AI工具和实用程序:https://tools.cmdragon.cn/

FastAPI与持续集成流水线构建

1.1 什么是持续集成(CI)?

持续集成(Continuous Integration,简称CI)是一种软件开发实践:开发人员频繁将代码提交到共享仓库(如GitHub的main分支),CI工具自动触发构建、测试流程,尽早发现代码中的错误。其核心目标是“快速反馈”——避免代码集成时出现大规模冲突,或因单个提交破坏整个项目的功能。

对于FastAPI项目而言,CI的价值在于:

  • 保证类型安全:FastAPI依赖Pydantic模型做请求验证,CI能自动检查提交的代码是否违反类型约束;
  • 避免端点失效:自动测试FastAPI的API端点(如GET /items/POST /users/),确保接口功能正常;
  • 一致性验证:确保代码在不同环境(开发、测试、生产)中的行为一致。
1.2 选择CI工具:GitHub Actions为例

目前主流的CI工具包括GitHub Actions、GitLab CI、Jenkins等。本文以GitHub Actions为例(因多数FastAPI项目托管在GitHub,配置简单且免费)。

GitHub Actions的核心概念:

  • Workflow(工作流):定义CI的触发条件和执行步骤,存储在项目根目录的.github/workflows/文件夹中;
  • Job(任务):一个Workflow可包含多个Job,如“构建代码”“运行测试”“推送镜像”;
  • Step(步骤):Job的具体执行单元,如“拉取代码”“安装依赖”。
1.3 编写FastAPI项目的CI流水线配置

以下是一个完整的FastAPI CI工作流文件.github/workflows/ci.yml),涵盖“代码拉取→依赖安装→测试→构建Docker镜像”:

name: FastAPI CI  # 工作流名称
on:  # 触发条件:Push到main分支或PR到main分支
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build-and-test:  # 定义一个名为build-and-test的Job
    runs-on: ubuntu-latest  # 运行在Ubuntu最新版本的虚拟环境中
    steps:
      # 步骤1:拉取项目代码(必须第一步,否则后续步骤无代码可操作)
      - name: Checkout code
        uses: actions/checkout@v4  # 使用官方的checkout动作,拉取代码到虚拟环境

      # 步骤2:设置Python环境(匹配项目的Python版本)
      - name: Set up Python 3.11
        uses: actions/setup-python@v5  # 官方的Python环境配置动作
        with:
          python-version: "3.11"  # 指定Python版本(需与项目依赖一致)

      # 步骤3:安装项目依赖(使用requirements.txt)
      - name: Install dependencies
        run: |  # 运行Shell命令
          python -m pip install --upgrade pip  # 升级pip到最新版
          pip install -r requirements.txt  # 安装requirements.txt中的依赖

      # 步骤4:运行Pytest测试(生成JUnit格式的测试报告)
      - name: Run tests with Pytest
        run: pytest --junitxml=test-results.xml  # 运行测试并生成JUnit报告(方便后续查看)

      # 步骤5:构建Docker镜像(可选,若项目用Docker部署)
      - name: Build Docker image
        run: docker build -t my-fastapi-app:${
   
   {
   
    github.sha }} .  # 构建镜像,标签用Git提交的SHA值(唯一标识)

配置说明

  • on字段:触发CI的场景——当代码推送到main分支,或有PR合并到main时,自动运行;
  • runs-on: ubuntu-latest:使用GitHub提供的Ubuntu虚拟环境,无需自己搭建服务器;
  • --junitxml=test-results.xml:生成JUnit格式的测试报告,方便GitHub Actions展示测试结果;
  • ${ { github.sha }}:GitHub的内置变量,代表当前提交的SHA哈希值,用于标记Docker镜像版本(避免重复)。
1.4 流水线的关键步骤解析
  1. 拉取代码(Checkout)
    使用actions/checkout@v4动作,将GitHub仓库的代码复制到CI的虚拟环境中,是所有CI工作流的基础。

  2. 设置Python环境
    FastAPI依赖特定版本的Python(如3.9+),actions/setup-python@v5会自动安装指定版本的Python,并配置pip等工具。若不设置,虚拟环境的Python版本可能与项目不兼容(如默认Python 3.8,而项目用Python 3.11),导致依赖安装失败。

  3. 安装依赖
    通过pip install -r requirements.txt安装项目所有依赖(包括FastAPI、Pydantic、Uvicorn等)。requirements.txt需包含项目的所有第三方库及其版本(可通过pip freeze > requirements.txt生成)。

  4. 运行测试
    使用pytest运行测试用例(测试文件需以test_开头,如test_main.py)。--junitxml参数生成的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值