Python3脚本编程:解析Yapi接口文档组成excel测试用例

本文主要是介绍Python3脚本编程:解析Yapi接口文档组成excel测试用例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景:是不是总要说点什么,才能显得正式?好吧,我也很无奈,直接上代码它不香么? 

'''
Created on 2020年3月11日@author: qguan
'''import json
from utils.HandleRequests import do_request
from utils.HandleExcel import Write_excel
import conftest# 获取接口文档项目id
pro_url='接口文档地址'
# 接口文档登录地址
login_url='接口文档登录地址'
# 接口文档用户信息
login_info={"email":"账号","password1":"密码"}
# 用户登录接口文档地址
do_request("POST", login_url, login_info, is_json=True)# 登录后获取接口文档所有项目
res0=do_request("get", pro_url)
pro_info=res0['data']['list']def get_pro_name():'''获取项目名称list'''name_list=[]# 遍历获取所有项目名称加入listfor i in range(len(pro_info)):pro_name=pro_info[i]['name']name_list.append(pro_name)return name_listdef get_pro_id():'''根据获取项目名称list,输入选择的项目,获取id'''print(get_pro_name())pro_name=input("根据以上列出的项目名称输入:")# 遍历项目,通过输入的项目名,获取项目idfor i in range(len(pro_info)):pro_job=pro_info[i]['name']if pro_job==pro_name:pro_id=pro_info[i]['_id']return pro_iddef get_jk_info(pro_id):'''通过项目id获取接口信息'''# 获取项目接口信息in_url='接口文档地址?page=1&limit=80&project_id={}'.format(pro_id)pro_url='接口文档地址/get?id={}'.format(pro_id)# 获取项目接口信息res1=do_request("get", in_url)# 获取项目信息res2=do_request('get', pro_url)# 提取测试的路径env=res2['data']['env']for j in range(len(env)):if env[j]['name']=='test':env_url=env[j]['domain']else:env_url="本地测试环境"# 接口信息jk_list=[]jk_list.append(env_url)# 接口关键信息:地址、方法、名称、及idinterface=res1['data']['list']for i in range(len(interface)):method=interface[i]['method']path=interface[i]['path']title=interface[i]['title']jk_id=interface[i]['_id']jk_info='-'.join((path,title,method,str(jk_id)))jk_list.append(jk_info)return jk_listdef get_jk_body(jk_id):'''通过接口id,获取接口请求参数'''body_url='接口文档地址/get?id={}'.format(jk_id)res=do_request('get', body_url)# 请求参数body_info=res['data'].get('req_body_other')res_q={}if body_info: # 如果有参数res1=json.loads(body_info)if res1.get('properties'):for k in res1['properties'].keys():res_q[k]=""return res_qdef write_to_excel(jk_info,file_path):'''解析接口信息数据 ,写入excel'''ws=Write_excel(file_path)count=1 # 列数caseid=0 # 用例编号env=jk_info[0]for el in jk_info[1:]:count+=1caseid+=1jk_list=el.split('-')path=jk_list[0]title=jk_list[1]method=jk_list[2]jk_id=jk_list[3]
#         print(path,title,method,jk_id)if method=='POST':params=get_jk_body(jk_id)ws.write(count, 1, caseid)ws.write(count, 2, title)ws.write(count, 3, env)ws.write(count, 4, path)ws.write(count, 5, method)if params: # 如果参数不为空ws.write(count, 6, str(params).replace("'", '"'))else:ws.write(count, 1, caseid)ws.write(count, 2, title)ws.write(count, 3, env)ws.write(count, 4, path)ws.write(count, 5, method)if __name__ == '__main__':pro_id=get_pro_id()jk_info=get_jk_info(pro_id)file_path=conftest.data_path+"interface_001interface_001.xlsx"write_to_excel(jk_info,file_path)

**日拱一卒无有尽,功不唐捐终入海!**

这篇关于Python3脚本编程:解析Yapi接口文档组成excel测试用例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1043810

相关文章

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达