Ubuntu环境下Swagger项目的测试流程
在Ubuntu系统上测试Swagger项目前,需安装以下基础工具:
sudo apt update && sudo apt install -y nodejs npm安装,安装后通过node -v和npm -v验证版本。dist目录后运行http-server -p 8080启动服务;http-server,再启动服务。启动后通过http://localhost:8080访问Swagger UI界面。要让Swagger识别并测试API,需提供符合OpenAPI规范的文档(swagger.yaml或swagger.json):
swagger: '2.0'
info:
title: Sample API
version: 1.0.0
paths:
/users:
get:
summary: List all users
responses:
200:
description: A list of users
schema:
type: array
items:
$ref: '#/definitions/User'
definitions:
User:
type: object
properties:
id:
type: integer
name:
type: string
springfox-swagger2和springfox-swagger-ui依赖(版本2.9.2+),创建配置类启用Swagger,启动应用后访问http://localhost:8080/swagger-ui.html自动生成文档。Swagger UI提供了可视化的手动测试界面,无需编写代码即可快速验证API:
http://localhost:8080),找到目标API端点(如/users)。?name=John),在“Body”区域输入请求体(如POST请求的JSON数据)。自动化测试可提高测试效率,适用于持续集成(CI)环境,常见方式如下:
适合Node.js项目,通过Swagger文档生成测试脚本:
npm install mocha chai supertest yamljs --save-dev。test-swagger.js):const chai = require('chai');
const expect = chai.expect;
const swaggerUi = require('swagger-ui-express');
const YAML = require('yamljs');
const request = require('supertest');
// 加载Swagger文档
const swaggerDocument = YAML.load('./api-docs.yaml');
const app = require('../app'); // 你的Express应用
// 测试用例
describe('GET /users', () => {
it('should return a list of users', (done) => {
request(app)
.get('/api/users') // 根据Swagger文档中的路径调整
.expect(200)
.end((err, res) => {
if (err) return done(err);
expect(res.body).to.be.an('array');
done();
});
});
});
npx mocha test-swagger.js。适合Python项目,通过Swagger文档解析接口信息并发送请求:
pip install requests pytest pyyaml。test_sample_api.py):import unittest
import requests
import yaml
class TestSampleAPI(unittest.TestCase):
def setUp(self):
with open('api.yaml') as f:
swagger_data = yaml.safe_load(f)
self.base_url = f"http://{swagger_data['host']}{swagger_data['basePath']}"
def test_get_users(self):
response = requests.get(f"{self.base_url}/v1/users")
self.assertEqual(response.status_code, 200)
data = response.json()
self.assertIsInstance(data, list)
if __name__ == '__main__':
unittest.main()
python3 -m pytest test_sample_api.py。适合性能测试或复杂场景(如压力测试、并发测试):
bin目录运行./jmeter启动。确保Swagger UI在不同浏览器(Chrome、Firefox、Edge)和版本中正常显示和功能正常:
docker-compose up -d --name chrome110 -p 5555:4444 selenium/standalone-chrome:4.8.0-20230210),通过Swagger UI的自动化测试脚本在Grid上运行测试。将自动化测试集成到CI/CD管道(如Jenkins、GitHub Actions),实现代码提交后自动运行测试:
npm test或pytest),设置邮件通知测试结果。.github/workflows/test.yml文件,定义触发条件(如push或pull_request),添加测试步骤(如npm install && npm test)。