api-automation-test/README.md

215 lines
7.3 KiB
Markdown
Raw Normal View History

2021-02-02 08:55:59 +08:00
# ApiAutomationTest
2021-02-04 11:38:32 +08:00
[![Python Version](https://img.shields.io/badge/python->=3.6-blue.svg)](https://www.python.org/downloads/release)
[![License](https://img.shields.io/:license-apache-brightgreen.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
[![standard-readme compliant](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)
2021-02-03 09:39:28 +08:00
接口自动化测试平台`ApiAutomationTest`
2021-02-02 08:55:59 +08:00
2021-02-04 11:38:32 +08:00
- 使用她可以像`PostMan`一样进行单个或多个接口调试,或像`JMeter`一样使用逻辑控制器组件对案例步骤进行流程控制。
- 测试案例当然少不了期望断言的设置,她可以方便的为请求接口设置期望断言和脚本断言。
- 她同时也提供了例如定时器、变量定义、脚本等工具组件,您可以使用不同类型的组件编写出丰富测试案例场景。
- 您还可以为项目配置定时任务来周期或定时触发执行。
- 案例执行完毕后查看报告,支持执行结果钉钉通知。
2021-02-02 08:55:59 +08:00
2021-02-19 11:53:55 +08:00
> [Demo示例](http://81.70.247.60:5000/) (用户名/密码 admin/admin)
2021-02-19 11:50:24 +08:00
2021-02-03 09:39:28 +08:00
## 内容列表
2021-02-04 11:38:32 +08:00
2021-02-03 09:39:28 +08:00
- [背景](#背景)
- [软件架构](#软件架构)
- [安装](#安装)
2021-02-04 11:38:32 +08:00
- [使用说明](#使用说明)
- [页面介绍](#页面介绍)
- [案例编写](#案例编写)
- [构建执行](#构建执行)
- [查看报告](#查看报告)
2021-02-04 16:51:03 +08:00
- [组件说明](#组件说明)
2021-02-04 11:38:32 +08:00
- [维护者](#维护者)
- [鸣谢](#鸣谢)
- [如何贡献](#如何贡献)
- [使用许可](#使用许可)
2021-02-02 08:55:59 +08:00
2021-02-03 09:39:28 +08:00
## 背景
2021-02-02 08:55:59 +08:00
2021-02-08 23:05:45 +08:00
我和大多数测试人员一样,手工接口测试常用`PostMan`来完成。
接口自动化会使用`JMeter+Ant+Jenkins`作为解决方案,实现自动化执行、输出报告
以及定时构建和通知。
而对于初次接触`JMeter+Ant+Jenkins`自动化解决方案的人来说,搭建跑起来还是有点上手难度的。
本项目借鉴各个工具特点初步形成了目前主要功能(支持接口手工调试、项目级模块级执行、报告输出、钉钉通知、定时构建)
2021-02-02 08:55:59 +08:00
2021-02-03 09:39:28 +08:00
## 软件架构
2021-02-04 11:38:32 +08:00
2021-02-03 09:39:28 +08:00
- 前端 Bootstrap4 + JS&JQuery
2021-02-28 12:31:04 +08:00
- 后端 Python + Flask
2021-02-03 09:39:28 +08:00
- 依赖库(后端核心第三方库)
- Flask
- Flask-SQLAlchemy
- Flask-Migrate
- Flask-SocketIO
- requests
- PyMySQL
- paramiko
- APScheduler
2021-02-02 08:55:59 +08:00
2021-02-03 09:39:28 +08:00
## 安装
2021-02-04 11:38:32 +08:00
2021-03-09 08:46:24 +08:00
开发环境和生产环境使用的是Python3.6版本,理论上>=py3.6都可以,建议大家使用`Python3.6`版本。
支持`Windows`和`Linux`部署
2021-02-02 08:55:59 +08:00
2021-02-04 17:52:33 +08:00
- 第一步: 安装Python第三方库
使用pip工具安装
```
pip install -r requirements.txt
```
国内可以使用douban的镜像源快速下载
```
pip install -r requirements.txt -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
```
2021-02-02 08:55:59 +08:00
2021-02-05 09:18:01 +08:00
- 第二步: 初始化数据库
2021-02-04 17:52:33 +08:00
执行命令
```
flask init
```
2021-02-05 09:18:01 +08:00
- 第三步: 启动服务
2021-02-04 17:52:33 +08:00
执行命令
```
python webserver.py
```
2021-02-04 11:38:32 +08:00
## 使用说明
### 页面介绍
2021-02-04 17:52:33 +08:00
- 登录页面
初始化数据库后使用默认用户名admin, 密码admin登录
![](./docs/auth.login.png)
2021-02-04 11:38:32 +08:00
2021-02-04 17:52:33 +08:00
- 总览页面
查看构建信息
![](./docs/index.png)
2021-02-04 11:38:32 +08:00
2021-02-04 17:52:33 +08:00
- 项目页面
查看并管理所有项目
![](./docs/project.png)
2021-02-04 11:38:32 +08:00
2021-02-04 17:52:33 +08:00
- 模块页面
查看并管理单个项目中所有模块
![](./docs/module.png)
2021-02-04 11:38:32 +08:00
2021-02-04 17:52:33 +08:00
- 案例场景页面
编写/调试测试用例(后面重点介绍: [跳转查看](#案例编写))
![](./docs/scene.png)
2021-02-04 11:38:32 +08:00
2021-02-04 17:52:33 +08:00
- 报告页面(后面重点介绍: [跳转查看](#查看报告))
查看所有报告
![](./docs/report.png)
2021-02-04 11:38:32 +08:00
2021-02-04 17:52:33 +08:00
查看报告详细数据
![](./docs/report_detail.png)
2021-02-04 11:38:32 +08:00
2021-02-04 17:52:33 +08:00
- 设置页面
设置钉钉通知
2021-02-05 08:51:04 +08:00
![](./docs/dingtalk_robot_setting.png)
2021-02-04 11:38:32 +08:00
### 案例编写
2021-02-04 17:52:33 +08:00
项目(Project) -> 模块(Module) -> 场景(Scene) -> 组件(Element): 项目往下分为4个层级案例由不同组件组合而成
2021-03-07 12:52:53 +08:00
![](./docs/add_http_element.gif)
2021-02-04 16:51:03 +08:00
2021-02-04 18:43:12 +08:00
- 进入场景页面
![](./docs/demo_project.png)
点击进入模块下的场景页面
2021-02-04 17:52:33 +08:00
- 添加一个HTTP请求
![](./docs/demo_scene.png)
空的测试场景,点击左下角按钮添加测试场景
![](./docs/element.png)
在场景内添加请求组件这里添加一个HTTP请求
2021-02-04 16:51:03 +08:00
2021-02-04 17:52:33 +08:00
![](./docs/demo_http_element.png)
填写HTTP相关参数点击发送按钮测试当前接口。在组件下方可以添加期望断言、预处理脚本、后处理脚本。
2021-02-04 16:51:03 +08:00
2021-02-04 17:52:33 +08:00
> 预处理脚本(解释: 请求组件执行前执行预处理脚本)
后处理脚本(解释: 请求组件执行后执行后处理脚本)
2021-02-04 16:51:03 +08:00
- 执行模块级用例
2021-02-04 17:52:33 +08:00
![](./docs/demo_run_module.png)
编写完一个或多个场景后,执行整个模块。
2021-02-04 16:51:03 +08:00
- 查看报告
2021-02-04 17:52:33 +08:00
![](./docs/demo_module_report_detail.png)
报告页面实时查看运行日志和结果
2021-02-04 16:51:03 +08:00
2021-02-04 17:52:33 +08:00
### 构建执行
2021-02-04 16:51:03 +08:00
2021-02-04 17:52:33 +08:00
共有三种执行方式
2021-03-07 14:05:01 +08:00
![](./docs/three_execution_modes.gif)
2021-02-04 17:52:33 +08:00
1. `请求组件`点击`发送`按钮,如下图。
![](./docs/demo_http_element.png)
2021-02-04 11:38:32 +08:00
2021-02-04 17:52:33 +08:00
2. `场景页面`点击`执行测试`按钮,如下图。
![](./docs/demo_run_module.png)
> 场景页面包含了一个模块下所有场景,因此这里执行的是一个模块所有案例。
2021-02-04 11:38:32 +08:00
2021-02-04 17:52:33 +08:00
3. `模块页面`点击`执行测试`按钮,如下图。
![](./docs/demo_run_project.png)
> 模块页面包含了一个项目下所有模块,因此这里执行的是一个项目所有用例。
2021-02-04 11:38:32 +08:00
### 查看报告
2021-02-04 17:52:33 +08:00
执行`请求组件`是不会生成测试报告,而是在当前页面中展示请求应答数据和期望断言结果。
执行`模块`和`项目`级执行时,会生成对应的测试报告。
2021-03-07 14:55:13 +08:00
![](./docs/view_reports.gif)
2021-02-04 17:52:33 +08:00
- 查看最近5个报告
![](./docs/show_report_dropdown.png)
- 测试报告支持实时查看执行结果和日志。
查看该案例请求和应答数据,以及设置的期望和断言结果。
![](./docs/demo_module_report_detail.png)
2021-02-04 11:38:32 +08:00
2021-02-04 18:43:12 +08:00
### 组件说明
2021-02-04 16:51:03 +08:00
2021-02-04 17:52:33 +08:00
组件类型 | 组件名 | 说明
---- | --- | ---
2021-02-04 18:43:12 +08:00
请求组件 | HTTP | 支持HTTP/HTTPS协议<br>支持常用方法: GET POST DELETE PUT PATCH HEAD OPTIONS
2021-02-04 17:52:33 +08:00
请求组件 | SSH | 远程执行命令
请求组件 | SQL | 支持MySQL数据库
请求组件 | Debug | 获取执行时上下文中所有定义的变量和值
工具组件 | HTTPRequestHeaderManager | 设置HTTP请求头数据
2021-02-04 17:52:33 +08:00
工具组件 | VariableDefinition | 定义变量
工具组件 | Timer | 定时器, 暂停一段时间后继续执行
工具组件 | Script | 支持编写Python脚本, 灵活处理复杂逻辑和数据
逻辑组件 | SIMPLE | 简单控制器, 可用于对组件进行分组管理
逻辑组件 | IF | IF控制器, 填写表达式做是非判断, 只有为True才执行控制器内的组件
逻辑组件 | WHILE | WHILE控制器, 满足条件时持续循环, 否则跳出循环
逻辑组件 | LOOP | LOOP控制器, 设置循环次数, 循环执行控制器中的组件
2021-02-04 16:51:03 +08:00
2021-02-04 11:38:32 +08:00
## 维护者
[@azhengzz](https://gitee.com/azhengzz)
## 鸣谢
- [JMeter](https://jmeter.apache.org/)
- [PostMan](https://www.postman.com/)
- [MeterSphere](https://github.com/metersphere/metersphere)
- [HttpRunner](https://github.com/httprunner/httprunner)
## 如何贡献
非常欢迎你的加入![提一个 Issue](https://gitee.com/azhengzz/api-automation-test/issues) 或者提交一个 Pull Request。
项目遵循 [Contributor Covenant](http://contributor-covenant.org/version/1/3/0/) 行为规范。
## 使用许可
本项目使用 [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0.html) 许可。