python调用GPT实现:智能用例生成工具

工具作用:

根据输入的功能点,生成通用测试点

实现步骤

工具实现主要分2个步骤:

1.https请求调用Gpt,将返回响应结果保存为.md文件

2.用python实现 将 .md文件转换成.xmind文件

3.写个简单的前端页面,调用上述步骤接口

详细代码

1.调用gpt请求生成 md文件

import os
import requests
import json"""测试数据路径管理"""
SCRIPTS_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
DATAS_DIR = os.path.join(SCRIPTS_DIR, "datas")
Testcase_md= os.path.join(DATAS_DIR,'testcase.md')"""示例代码"""def sendGpt_getmd(content):# 设置请求头中的tokenheaders = {"Content-Type": "application/json"}# payload= 设置请求主体中的参数和数据,根据请求的参数格式传参即可payload = {"参数": "参数值"}# 发送POST请求response = requests.post("https://xxxxx", headers=headers,data=json.dumps(payload))# 解析响应结果if response.status_code == 200:result = response.textprint(result)with open(Testcase_md, "w", encoding="utf-8") as f:f.write(result)else:print("请求失败!")if __name__ == '__main__':# 示例用法:keydes为功能标题,casecontentTemp为发送给gpt的模板话术,在使用时可以将keydes设置为变量,由前端传参。另外可以根据需要修改casecontentTemp内容# 仅包含一级标题,二级标题,无序列表格式的Markdown形式:该格式不可修改,因为后续需要以Markdown格式转换成xmind文件keydes='上传附件'casecontentTemp="仅包含一级标题,二级标题,无序列表格式的Markdown形式发送给我。请写出 一级标题为'"+keydes+"'的测试用例,包含功能测试(正向/逆向/异常场景),性能测试,安全测试,兼容测试"sendGpt_getmd(casecontentTemp)

2.将md文件转换成xmind文件

通过步骤1,生成了md文件,以下代码是将md文件转换成xmind文件

import markdown
from bs4 import BeautifulSoup
import xminddef md_to_xmind(md_file, xmind_file):# 读取MD文件with open(md_file, 'r', encoding='utf-8') as f:md = f.read()# 解析MD文件html = markdown.markdown(md)# 创建XMind文件workbook = xmind.load(xmind_file)# 获取根节点root_topic = workbook.getPrimarySheet().getRootTopic()# 递归添加节点def add_topic(parent_topic, node):# 添加节点topic = parent_topic.addSubTopic()title = node.get('title', '')topic.setTitle(title)# 添加文本if 'html' in node:topic.setPlainNotes(node['html'])# 递归添加子节点if 'children' in node:for child in node['children']:add_topic(topic, child)# 解析HTML,并添加节点soup = BeautifulSoup(html, 'html.parser')rootmap_node = {'children': []}root_node = Nonecurrent_node = Nonefor tag in soup.children:if tag.name == 'h1':# 创建根节点root_node = {'title': tag.string, 'children': []}current_node = root_nodeelif tag.name == 'h2':new_node = {'title': tag.string, 'children': []}root_node['children'].append(new_node)current_node = new_nodeelif tag.name == 'p':current_node['html'] = str(tag)elif tag.name == 'ul':for li in tag.children:text = li.text.strip()if len(text) > 0:li_node = {'title': text, 'children': []}current_node['children'].append(li_node)elif tag.name == 'ol':for li in tag.children:text = li.text.strip()if len(text) > 0:li_node = {'title': text, 'children': []}current_node['children'].append(li_node)# 添加节点for node in root_node['children']:add_topic(root_topic, node)# 修改根节点的名称root_topic.setTitle(root_node['title'])# 保存XMind文件xmind.save(workbook, xmind_file)if __name__ == '__main__':# 示例用法 example.md为步骤1生成的文件,通过md_to_xmind方法调用将.md文件转换成xmind文件md_to_xmind('example.md', 'example.xmind')

3.合并步骤1,2后运行

import os
from scripts.datas.mdtoxmind import md_to_xmind
from scripts.datas.sendGpt import sendGpt_getmd"""测试数据路径管理"""
SCRIPTS_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
DATAS_DIR = os.path.join(SCRIPTS_DIR, "datas")
Testcase_md= os.path.join(DATAS_DIR,'testcase.md')
Testcase_xmind= os.path.join(DATAS_DIR,'testcase.xmind')def oneTocase(keydes):casecontentTemp="仅包含一级标题,二级标题,无序列表格式的Markdown形式发送给我。请写出 一级标题为'"+keydes+"'的测试用例,包含功能测试(正向/逆向/异常场景),性能测试,安全测试,兼容测试"sendGpt_getmd(casecontentTemp)md_to_xmind(Testcase_md, Testcase_xmind)if __name__ == '__main__':# 示例用法keydes='上传附件'oneTocase(keydes)

运行后结果:

生成对应文件

打开后查看如下内容

后期集成测试工具构思:

1.将详细代码中步骤3暴露出rest接口,供前端调用

2.前端页面可提供出形成 通用工具

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/102730.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

table 单元格中嵌套子表格 样式撑开问题

如图,表格中的td嵌套表格,里边表格把外层撑开,不能按100%显示; 解决办法 给父级table 加一个table-layout:fixed;样式

(其他) 剑指 Offer 46. 把数字翻译成字符串 ——【Leetcode每日一题】

❓ 剑指 Offer 46. 把数字翻译成字符串 难度:中等 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。…

cpolar内网穿透

目录 一、引言二、什么是cpolar三、内网穿透四、如何使用cpolar1、下载cpolar软件安装包2、注册cpolar账号3、使用cpolar 一、引言 当我们完成了一个tomcat的web项目之后,如果我们想让其他电脑访问到这个项目,我们可以让其他电脑和本机连接到同一个局域…

leetcode刷题--栈与递归

文章目录 1. 682 棒球比赛2. 71 简化路径3. 388 文件的最长绝对路径4. 150 逆波兰表达式求值5. 227. 基本计算器II6. 224. 基本计算器7. 20. 有效的括号8. 636. 函数的独占时间9. 591. 标签验证器10. 32.最长有效括号12. 341. 扁平化嵌套列表迭代器13. 394.字符串解码 1. 682 棒…

MySQL 如何避免 RC 隔离级别下的 INSERT 死锁?

本文分析了 INSERT 及其变种(REPLACE/INSERT ON DUPLICATE KEY UPDATE)的几个场景的死锁及如何避免。 作者:张洛丹,DBA 数据库技术爱好者~ 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编…

win11和虚拟机上的ubuntu系统共享文件夹

出发点:有时候需要在虚拟机内和win11系统之间进行文件拷贝操作,但是虚拟机内的Vmware Tools不好用 解决方式 开启虚拟机共享文件夹 在虚拟机的Ubuntu系统内的终端命令行输入以下命令 sudo /usr/bin/vmhgfs-fuse .host:/SVMware /mnt/win -o subtype…

电子产品CE认证申请,CE-RED认证

CE认证,即只限于产品不危及人类、动物和货品的安全方面的基本安全要求,而不是一般质量要求,协调指令只规定主要要求,一般指令要求是标准的任务。 构成欧洲指令核心的"主要要求",在欧共体1985年5月7日的&…

【webpack】HMR热更新原理

本文:参考文章 一、HMR是什么,为什么出现 1、出现的原因 之前,应用的加载、更新都是一个页面级别的操作,即使单个代码文件更新,整个页面都要刷新,才能拿到最新的代码同步到浏览器,导致会丢失…

【猿灰灰赠书活动 - 05期】- 【速学Linux:系统应用从入门到精通】

👨‍💻本文专栏:赠书活动专栏(为大家争取的福利,免费送书) 👨‍💻本文简述:博文为大家争取福利,与机械工业出版社合作进行送书活动 👨‍&#x1f…

数学建模:相关性分析

🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 数学建模:相关性分析 文章目录 数学建模:相关性分析相关性分析两变量的相关分析PearsonSpearmanKendall tua-b 双变量关系强度测量的指标相关系数的性质代码实现example偏相关分析 相…

云存储:实现数据备份与恢复的创新方法

文章目录 云存储的基本概念数据备份的创新方法自动化备份策略增量备份和版本控制多地点备份 数据恢复的创新方法快速数据恢复弹性扩展性数据验证和一致性 案例分析:AWS S3自动化备份策略增量备份和版本控制多地点备份快速数据恢复数据验证和一致性 结论 &#x1f38…

外滩大会今日开幕 生成式AI成为热议话题

2023 Inclusion外滩大会9月7日在上海黄浦世博园正式开幕。这场以“科技创造可持续未来”为主题的大会为期三天,近20位“两院”院士、诺贝尔奖和图灵奖得主,全球超500位有影响力的科技领军企业和专家学者,将在此带来一场科技、人文和产业的思想…