大家好~我是小方,欢迎大家关注笋货测试笔记体完记得俾个like呀
回顾
在之前的篇章中,我们总算完成项目的"重构",接下来的几篇中,我们来进行项目同步的设计,这部分功能设计好之后,大概是长这样子的
Apidoc
数据工厂的核心就是Apidoc,简单来说,就是通过维护脚本里面的注释信息,然后执行apidoc命令,生成apidoc接口文档,通过解析接口文档的json数据,在前端展示脚本信息,执行脚本,更多的apidoc介绍可看:apidocjs.com/
- 安装apidoc 由于apidoc依赖于包管理工具npm进行安装,所以安装之前先安装好node、npm
npm install -g apidoc@0.22
记得不要安装最新版本的,最新版本的会没有json数据
- apidoc使用
我们先来维护一个脚本,具体维护如下:
这个脚本我维护成一个项目,项目地址:gitee.com/JokerChat/f…
整体目录如下:
# 去到项目中存放case目录里去
cd xxx/xxx/xxx/xxx/funcase/case
# 执行apidoc命令生成文档
apidoc -o ../doc
执行完之后,可以看到doc目录里面存放接口文档,打开index.html
可以看到详细的接口信息,doc目录里还有个api_data.json
文件,没错,我们主要核心是解析这个json文件的内容进入入库,当然这个入库不是简单的入库,是要有比对的入库,删除xx场景,新增xx场景,修改xx场景...
编写实现步骤
既然我们有了明确的目标,那我们先设计一下步骤吧~
- git pull 更新项目
- 执行apidoc命令,生成api_doc.json
- 解析apidoc数据
- apidoc数据与数据库数据比对,入库
- 处理生成同步消息
我们先来实现前面2个步骤吧,比较简单
代码实现
app/core/git.py
新增pull方法
app/core/get_project_path.py
新增获取项目路径相关方法
from app.commons.settings.config import FilePath
import os
class ProjectPath(object):
@staticmethod
def get(project_name: str, directory_name: str) -> (str, str):
"""
获取项目路径和脚本路径
:param project_name:项目名
:param directory_name: 造数场景目录名
:return: 项目目录,脚本目录
"""
project_path = os.path.join(FilePath.BASE_DIR, project_name)
if not os.path.isdir(project_path):
raise Exception(f"找不到{project_name}这个项目")
script_path = os.path.join(project_path, directory_name)
if not os.path.isdir(script_path):
raise Exception(f"找不到{directory_name}这个脚本目录")
return project_path, script_path
新建app/core/api_doc_parse.py
,新增ApiDocParse
类,新增执行apidoc命令方法和读取doc/api_data.json数据
我们将读取doc/api_data.json数据,进行解析(清洗数据),然后再进行执行入库逻辑(后面清洗数据和入库逻辑下一篇展开讲讲)
接着在app/logic/project_logic/project_logic.py
编写同步脚本逻辑
在app/routers/project/apis/project_api.py
引入该逻辑
app/routers/project/__init__.py
新增同步逻辑接口
测试环节
总结
5个步骤中,我们今天才完成前面2个步骤,下篇的话,要把剩下的3个步骤补充完毕哦~今天就这样吧done
- 项目地址