如何在Linux环境下利用Swagger进行API测试
在Linux系统中,Swagger的测试流程需依赖以下工具,推荐通过Docker(环境隔离、易部署)或手动安装(灵活定制)完成:
Docker部署(推荐)
sudo apt update && sudo apt install -y docker.io && sudo systemctl start docker && sudo systemctl enable docker
docker pull swaggerapi/swagger-editor:v4.6.0
docker pull swaggerapi/swagger-ui:v4.15.5
docker run -d -p 38080:8080 swaggerapi/swagger-editor:v4.6.0
docker run -d -p 38081:8080 swaggerapi/swagger-ui:v4.15.5
http://<服务器IP>:38080
(Editor)或http://<服务器IP>:38081
(UI)。手动安装(可选)
sudo apt install -y nodejs npm
npm install -g swagger swagger-ui
swagger-editor http-server -p 8080
(Editor)、swagger-ui http-server -p 8081
(UI)。API测试的前提是有规范的OpenAPI文档(支持YAML/JSON格式),需包含接口路径、参数、请求方法、响应结构等信息:
swagger.yaml
(或swagger.json
),示例如下:swagger: '2.0'
info:
title: Linux API测试示例
version: 1.0.0
basePath: /api/v1
paths:
/user/{id}:
get:
summary: 获取用户信息
parameters:
- name: id
in: path
required: true
type: integer
responses:
'200':
description: 成功返回用户信息
schema:
type: object
properties:
id:
type: integer
name:
type: string
File
→Import File
),实时校验文档语法和完整性。Swagger UI是Linux下最常用的交互式测试工具,无需编写代码即可快速验证接口:
http://<服务器IP>:38081
),点击Import
按钮,选择swagger.yaml
文件。/user/{id}
),点击展开。Try it out
按钮,输入必填参数(如id: 1
)。Execute
,下方会显示请求URL、响应状态码(如200)、响应体(如{"id":1,"name":"张三"}
)和响应时间。若需批量测试或集成到CI/CD流程,可使用命令行工具实现自动化:
Swagger Codegen生成测试代码
wget https://repo1.maven.org/maven2/io/swagger/codegen/v3/swagger-codegen-cli/3.0.44/swagger-codegen-cli-3.0.44.jar -O swagger-codegen-cli.jar
swagger.yaml
为例):java -jar swagger-codegen-cli.jar generate -i swagger.yaml -l python -o ./generated-client
pytest
框架):import pytest
from generated_client.api.default_api import DefaultApi
def test_get_user():
api = DefaultApi()
response = api.get_user_by_id(id=1)
assert response.status == 200
pytest test_api.py
。Postman + Newman CLI
Export
功能)。npm install -g newman
newman run your-collection.json
(支持生成HTML报告:newman run your-collection.json -r html
)。Dredd(OpenAPI规范测试工具)
npm install -g dredd
dredd swagger.yaml http://localhost:8080
(Dredd会根据文档中的请求/响应结构,自动调用API并比对结果)。若不想依赖图形界面或第三方工具,可直接用Linux自带的curl
命令测试接口:
curl "http://<服务器IP>:8080/api/v1/user/1"
curl -X POST "http://<服务器IP>:8080/api/v1/user/create" -H "Content-Type: application/json" -d '{"name":"李四","age":25}'
curl -X POST "http://<服务器IP>:8080/api/v1/user/create" -H "Content-Type: application/x-www-form-urlencoded" -d "name=王五&age=30"
。securityDefinitions
配置)。ab
(Apache Benchmark)、siege
等工具,测试接口的并发性能(如ab -n 1000 -c 100 http://<服务器IP>:8080/api/v1/user/1
)。