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

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

  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 流程中,确保每次版本升级到新环境时,核心接口功能得到全面验证。 也仅供我自己参考,不知道大家是不是都这样用的呢?

相关推荐
前端工作日常14 小时前
平台价值与用户规模的共生关系
electron·测试·puppeteer
CrissChan3 天前
AI赋能软件工程让测试左移更加可实施
人工智能·python·llm·软件工程·测试
努力奋斗的Tom4 天前
Air test框架与appium的优势
测试
瑞士龙珠5 天前
JMeter 多台压力机分布式测试(Windows)
测试
Apifox5 天前
如何在 Apifox 中正确使用前置 URL?
前端·后端·测试
陈哥聊测试6 天前
软件工程3.0时代,为什么人工测试仍必不可少?
人工智能·测试
檀檀19937 天前
测试抓包工具2-whistle抓包
测试
用户3521802454758 天前
靶场:Breach3.0攻略
安全·测试
ZoeLandia9 天前
前端自动化测试:Jest、Puppeteer
前端·自动化测试·测试
霍格沃兹测试开发9 天前
Playwright系列课(2) | 元素定位四大法宝:CSS/文本/XPath/语义化定位实战指南
开源·测试