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

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

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

相关推荐
大话性能3 天前
如何正确修复有异常的JSON?
测试
中草药z7 天前
【测试】开发模型和测试模型
测试·测开·瀑布模型·螺旋模型·scrum模型·vmox·w模型
城下秋草17 天前
pytest+playwright落地实战大纲
自动化测试·pytest·测试·playwright
莲动渔舟18 天前
PyTest自学-认识PyTest
python·pytest·测试
莲动渔舟18 天前
PyTest自学 - 将多个用例组织在一个类中
python·pytest·测试
南桥几晴秋24 天前
【软件测试】Bug篇
bug·测试
叫我林接接就好了1 个月前
jmeter设置tps、响应时间监测时间间隔
jmeter·测试
loooooongger1 个月前
UI自动化测试之:自动获取元素定位技术哪家强
测试
pycode1 个月前
解决 Airtest 启动 APP 自动翻转屏幕问题的三种方法
后端·python·测试