在Linux系统中,Swagger的测试需要依赖Swagger Editor(在线编辑与预览)、Swagger UI(可视化测试界面)和curl(命令行测试工具)。其中,Swagger Editor和Swagger UI可通过Docker快速部署:
sudo apt-get update && sudo apt-get install -y docker.io # Debian/Ubuntu
sudo systemctl start docker && sudo systemctl enable docker
docker pull swaggerapi/swagger-editor:v4.6.0
docker run -d -p 38080:8080 swaggerapi/swagger-editor:v4.6.0
docker pull swaggerapi/swagger-ui:v4.15.5
docker run -d -p 38081:8080 swaggerapi/swagger-ui:v4.15.5
sudo apt-get install -y curl # Debian/Ubuntu
sudo dnf install -y curl # Fedora/CentOS
Swagger测试的核心是OpenAPI规范文件(swagger.json或swagger.yaml),需定义API的基本信息(如标题、版本)、端点路径、请求参数、响应格式等。
vim、nano)创建swagger.yaml,示例如下:swagger: '2.0'
info:
title: Linux API测试示例
version: 1.0.0
paths:
/user/query:
get:
summary: 根据用户ID查询信息
parameters:
- name: userId
in: query
required: true
type: integer
responses:
'200':
description: 查询成功
schema:
type: object
properties:
id:
type: integer
name:
type: string
@ApiOperation、@ApiParam),然后使用swagger-maven-plugin生成规范文件:<!-- pom.xml添加依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
http://localhost:38080),点击左上角File → Import File,选择步骤2中创建的swagger.yaml或swagger.json文件。http://localhost:38081),在界面顶部的Swagger URL输入框中填入规范文件的本地路径(如http://localhost:38080/swagger.yaml),点击Explore导入。/user/query),点击右侧的TRY IT OUT按钮。userId),参数类型需与规范文件一致(如整数、字符串)。若习惯使用命令行,可通过curl工具直接向接口发送请求,验证接口功能:
curl "http://your-server-ip:port/user/query?userId=123"
curl -X POST "http://your-server-ip:port/user/create" \
-H "Content-Type: application/json" \
-d '{"name": "John Doe", "age": 30}'
curl -X POST "http://your-server-ip:port/user/login" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "username=admin&password=123456"
若需要频繁测试接口,可结合Swagger Codegen生成测试脚本,再用测试框架(如pytest、JUnit)实现自动化:
java -jar swagger-codegen-cli-2.4.29.jar generate -i swagger.json -l java -o ./test-project
pytest编写测试脚本(test_api.py):import requests
import pytest
BASE_URL = "http://your-server-ip:port/api"
def test_query_user():
response = requests.get(f"{BASE_URL}/user/query?userId=123")
assert response.status_code == 200
assert "id" in response.json()
assert "name" in response.json()
def test_create_user():
user_data = {"name": "Jane Doe", "age": 25}
response = requests.post(f"{BASE_URL}/user/create", json=user_data)
assert response.status_code == 201
assert response.json()["name"] == "Jane Doe"
pytest test_api.py,查看测试结果。docker ps查看容器状态。basePath需与接口实际路径一致,避免请求失败。