温馨提示×

centos swagger如何进行测试

小樊
46
2025-11-01 19:02:57
栏目: 智能运维

CentOS系统下Swagger测试的常用方法

1. 通过Swagger UI进行可视化测试(最常用)

Swagger UI是Swagger提供的交互式文档工具,支持直接在浏览器中测试API接口。

  • 步骤1:部署Swagger UI
    可通过Docker快速部署(推荐):
    docker pull swaggerapi/swagger-ui:v4.15.5 docker run -d -p 38081:8080 -e URL=/api-docs swaggerapi/swagger-ui:v4.15.5 
    或手动下载Swagger UI(如v3.50.0),解压后修改config-url指向后端API文档地址(如/v2/api-docs),再通过Nginx等web服务器提供服务。
  • 步骤2:访问Swagger UI
    浏览器输入http://<CentOS_IP>:38081(Docker部署)或http://<CentOS_IP>/swagger-ui.html(手动部署),进入Swagger UI界面。
  • 步骤3:测试接口
    在Swagger UI中找到目标接口(如/user/query-user-info),点击右侧Try it out按钮,输入必填参数(如limitpage),点击Execute即可发送请求。响应结果会显示在下方,包括状态码、响应时间和数据内容。

2. 使用curl命令行工具测试

若习惯使用命令行,可通过curl模拟HTTP请求测试API,适用于脚本自动化或无图形界面的场景。

  • 常见请求示例
    • GET请求(参数在URL中)
      curl "http://<CentOS_IP>:9090/client/selectByPage?limit=10&page=1" 
    • POST请求(表单参数)
      curl -X POST "http://<CentOS_IP>:9090/factory/insert" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "factoryName=TestFactory&no=123&remark=TestRemark" 
    • POST请求(JSON参数)
      curl -X POST "http://<CentOS_IP>:9090/material/selectAll" \ -H "Content-Type: application/json" \ -d '{"factory":"TestFactory","materialName":"TestMaterial","offset":0,"page":1,"pageSize":10}' 
    • 文件上传(FormData)
      curl -X POST "http://<CentOS_IP>:9090/api/all/order/money" \ -F "file=@/path/to/local/file.xlsx" \ -F "startTime=2020-01-01" \ -F "endTime=2020-06-30" 
    执行后,curl会返回接口的响应内容(如JSON、XML),可通过-v参数查看详细请求/响应头信息。

3. 利用自动化测试工具(适合CI/CD)

若需要集成到CI/CD流程或进行大规模测试,可使用以下工具生成测试代码或直接运行测试:

  • 方案1:Swagger Codegen生成测试代码

    1. 安装Swagger Codegen CLI:
      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 
    2. 生成测试客户端代码(以Python为例):
      java -jar swagger-codegen-cli.jar generate -i http://<CentOS_IP>:8080/v2/api-docs -l python -o ./generated-client 
    3. 编写测试脚本(使用pytest+requests):
      import pytest import requests BASE_URL = "http://<CentOS_IP>:8080/api" def test_get_user(): response = requests.get(f"{BASE_URL}/users") assert response.status_code == 200 assert isinstance(response.json(), list) def test_create_user(): user_data = {"name": "John Doe", "email": "johndoe@example.com"} response = requests.post(f"{BASE_URL}/users", json=user_data) assert response.status_code == 201 assert response.json()["name"] == "John Doe" 
    4. 运行测试:
      pytest test_api.py -v 
  • 方案2:Postman Newman CLI

    1. 将Swagger文档导出为Postman Collection(可通过Swagger Editor或Codegen转换)。
    2. 安装Newman:
      npm install -g newman 
    3. 运行测试:
      newman run your-swagger-collection.json -r cli,json # 输出CLI结果和JSON报告 
    4. 集成到CI/CD(如Jenkins):
      newman run your-swagger-collection.json -r cli,json,html --reporter-html-export report.html 
  • 方案3:Dredd(针对OpenAPI规范)

    1. 安装Dredd:
      npm install -g dredd 
    2. 运行测试(需提供Swagger YAML文件和API地址):
      dredd swagger.yaml http://<CentOS_IP>:8080 

    Dredd会根据Swagger文档自动生成测试用例,验证接口是否符合规范。

注意事项

  • 确保CentOS防火墙开放了API端口(如8080、9090):
    sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent sudo firewall-cmd --reload 
  • 若后端服务未启动,需先启动应用(如Spring Boot项目通过mvn spring-boot:run启动)。
  • 测试敏感接口(如DELETE、PUT)时,需确认接口权限和数据安全性。

0