写好接口自动化代码之后,如何使用起来呢?

一、接口自动化测试的核心目标

  1. 验证主流程接口:确保核心业务链路(如登录、下单、支付)的接口功能正常。
  2. 环境适配性检查:验证新环境(如预发布环境、生产环境)的配置正确性。
  3. 快速反馈:在部署后立即执行测试,10 分钟内发现问题。

二、完整工作流程设计

graph TD A[代码合并到主分支] --> B[触发 CI 测试] B --> C{测试通过?} C -->|是| D[构建镜像/包] D --> E[部署到新环境] E --> F[触发接口自动化测试] F --> G{测试通过?} G -->|是| H[通知部署成功] G -->|否| I[回滚并告警]

流程说明

  1. 代码合并阶段:运行单元测试和基础接口测试(验证代码逻辑)。
  2. 部署后阶段:在新环境部署完成后,运行完整的接口自动化测试(验证环境适配性)。

三、GitHub Actions 集成方案

.github/workflows 目录下创建两个工作流文件:

1. ci.yml:持续集成工作流(代码变更时触发)

yaml 复制代码
name: CI Pipeline

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  unit-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.9"
      - run: pip install -r requirements.txt
      - run: pytest tests/unit/ -v  # 运行单元测试

  basic-api-test:
    needs: unit-test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.9"
      - run: pip install -r requirements.txt
      - run: pytest tests/api/basic/ -v  # 运行基础接口测试
        env:
          API_BASE_URL: ${{ secrets.DEV_API_URL }}  # 使用开发环境

2. deploy-verify.yml:部署验证工作流(部署后手动/自动触发)

yaml 复制代码
name: Post-Deploy Verification

on:
  workflow_dispatch:  # 手动触发
    inputs:
      environment:
        description: '目标环境 (staging/prod)'
        required: true
        default: 'staging'
  # 或者通过部署完成后的 Webhook 自动触发

jobs:
  full-api-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.9"
      - run: pip install -r requirements.txt

      - name: Run Full API Tests
        run: pytest tests/api/full/ -v --alluredir=./reports
        env:
          API_BASE_URL: ${{ 
            inputs.environment == 'prod' 
            && secrets.PROD_API_URL 
            || secrets.STAGING_API_URL 
          }}  # 根据输入参数切换环境

      - uses: actions/upload-artifact@v4
        if: always()
        with:
          name: allure-report
          path: ./reports

      - uses: actions/slack-notify@v1  # 发送 Slack 通知
        if: failure()
        with:
          status: ${{ job.status }}
          webhook: ${{ secrets.SLACK_WEBHOOK }}

四、关键配置说明

1. 环境变量管理

  • GitHub Secrets :在仓库的 Settings -> Secrets 中配置:
    • DEV_API_URL:开发环境地址
    • STAGING_API_URL:预发布环境地址
    • PROD_API_URL:生产环境地址
    • SLACK_WEBHOOK:Slack 通知的 Webhook

2. 测试用例组织

bash 复制代码
tests/
├── api/
│   ├── basic/      # 基础测试(快速验证)
│   │   └── test_login.py
│   └── full/       # 完整测试(部署后运行)
│       ├── test_order.py
│       └── test_payment.py
└── unit/
    └── test_models.py

3. 测试代码示例

python 复制代码
# tests/api/full/test_order.py
import os
import pytest
from utils.http_client import HTTPClient

API_BASE_URL = os.getenv("API_BASE_URL")  # 从环境变量读取

class TestOrder:
    @pytest.fixture(scope="class")
    def client(self):
        return HTTPClient(base_url=API_BASE_URL)

    def test_create_order(self, client):
        """测试创建订单全流程"""
        # 1. 登录
        login_resp = client.post("/login", json={"user": "admin", "pwd": "123456"})
        assert login_resp.status_code == 200
        
        # 2. 创建订单
        order_resp = client.post("/orders", json={"product_id": 1001})
        assert order_resp.status_code == 201
        assert "order_id" in order_resp.json()

        # 3. 验证订单状态
        order_id = order_resp.json()["order_id"]
        status_resp = client.get(f"/orders/{order_id}")
        assert status_resp.json()["status"] == "pending"

五、触发逻辑

  1. 运维部署新环境时触发

    • 方式 1 :在部署脚本的最后调用 GitHub Actions 的 API:

      bash 复制代码
      curl -X POST https://api.github.com/repos/{owner}/{repo}/actions/workflows/deploy-verify.yml/dispatches \
      -H "Authorization: Bearer $GITHUB_TOKEN" \
      -d '{"ref":"main", "inputs":{"environment":"staging"}}'
    • 方式 2:在部署工具(如 Jenkins、ArgoCD)中配置 Webhook。

  2. 手动触发 :在 GitHub UI 中点击运行:


六、高级优化建议

  1. 环境隔离

    • 为每个环境创建独立的测试数据(如测试账号、订单号)。
    • 使用数据库快照工具(如 Flyway)重置测试环境。
  2. 测试报告增强

    yaml 复制代码
    # 在 GitHub Actions 中集成 Allure 报告
    - name: Allure Report
      uses: simple-elf/allure-report-action@v1
      with:
        allure_results: ./reports
  3. 性能监控

    yaml 复制代码
    - name: Run Performance Test
      run: locust -f locustfile.py --headless -u 100 -r 10 --host ${{ env.API_BASE_URL }}

通过以上方案,你的接口自动化测试将深度集成到 CI/CD 流程中,确保每次版本升级到新环境时,核心接口功能得到全面验证。 也仅供我自己参考,不知道大家是不是都这样用的呢?

相关推荐
song_ly0014 天前
深入理解软件测试覆盖率:从概念到实践
笔记·学习·测试
试着8 天前
【AI面试准备】掌握常规的性能、自动化等测试技术,并在工作中熟练应用
面试·职场和发展·自动化·测试
waves浪游8 天前
论坛系统测试报告
测试工具·测试用例·bug·测试
灰色人生qwer9 天前
使用JMeter 编写的测试计划的多个线程组如何生成独立的线程组报告
jmeter·测试
.格子衫.9 天前
powershell批处理——io校验
测试·powershell
试着10 天前
【AI面试准备】TensorFlow与PyTorch构建缺陷预测模型
人工智能·pytorch·面试·tensorflow·测试
waves浪游10 天前
博客系统测试报告
测试工具·测试用例·bug·测试
智云软件测评服务12 天前
数字化时代下,软件测试中的渗透测试是如何保障安全的?
渗透·测试·漏洞
试着13 天前
【AI面试准备】XMind拆解业务场景识别AI赋能点
人工智能·面试·测试·xmind
waves浪游14 天前
性能测试工具篇
测试工具·测试用例·bug·测试