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

news2024/12/27 14:19:04

工具作用:

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

实现步骤

工具实现主要分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):
    # 设置请求头中的token

    headers = {
        "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.text
        print(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 xmind

def 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 = None
    current_node = None
    for tag in soup.children:
        if tag.name == 'h1':
            # 创建根节点
            root_node = {'title': tag.string, 'children': []}
            current_node = root_node
        elif tag.name == 'h2':
            new_node = {'title': tag.string, 'children': []}
            root_node['children'].append(new_node)
            current_node = new_node
        elif 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.coloradmin.cn/o/985116.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

7个数据科学Python库将为您节省大量时间

7个数据科学Python库将为您节省大量时间 在进行数据科学时,您可能会花费大量时间编写代码并等待计算机运行某些操作。我挑选了一些可以在这两种情况下节省您时间的Python库。即使您只将其中一个库纳入您的工具库,您仍然可以在下次项目工作时节省宝贵的时…

揭示OLED透明屏数据:探索未来显示技术的潜力

OLED透明屏作为一项颇具吸引力的显示技术,以其独特的特点和卓越的画质在市场上引起了广泛关注。 在这篇文章中,尼伽将和大家一起深入探索OLED透明屏的数据,通过具体的市场趋势分析、技术指标解析、应用领域探讨和未来前景展望,为…

【C++基础】实现日期类

​👻内容专栏: C/C编程 🐨本文概括: C实现日期类。 🐼本文作者: 阿四啊 🐸发布时间:2023.9.7 对于类的成员函数的声明和定义,我们在类和对象上讲到过,需要进行…

mac 查看端口占用

sudo lsof -i tcp:port # 示例 sudo lsof -i tcp:8080 杀死进程 sudo kill -9 PID # 示例 sudo kill -9 8080

“搞事情”?OpenAl将于11月召开其首届开发者大会

摘要:OpenAI也要召开它的第一届开发者大会了。这次活动,或许标志着OpenAI向其下一阶段的商业开发迈出了关键一步。 昨天,OpenAI宣布将于11月6日举办其首次开发者大会。在这场名为“OpenAI DevDay”的活动中,OpenAI的技术人员将进行…

欧科云链与HashKey Exchange达成合作,助力香港虚拟资产合规化

继8月10日 欧科云链 与 华为云 达成合作之后, 今天,欧科云链 又与 Hashkey Exchange 共同宣布正式达成合作! 这次与Hashkey达成合作,双方又将在Web3行业中谱写怎样的故事? 9月6日,欧科云链控股有限公司&…

2023 年高教社杯全国大学生数学建模竞赛题目 C 题 蔬菜类商品的自动定价与补货决策

C 题 蔬菜类商品的自动定价与补货决策 在生鲜商超中,一般蔬菜类商品的保鲜期都比较短,且品相随销售时间的增加而变差, 大部分品种如当日未售出,隔日就无法再售。因此,商超通常会根据各商品的历史销售和需求情况每天进…

生物通路数据库收录1600+整合的经典通路

生物通路数据库为科学家提供了关于生物通路的大量信息和资源,特别是在数据整合、信息检索、数据可视化分析、数据交互、生物学研究等方面,积极推动了生物学研究和科学的发展。 世界各地正在创建各种类型的通路数据库,每个数据库都反映了其创…

快递批量查询高手必备的实用工具

在网购日益普及的今天,我们经常需要查询快递的物流信息。但是,传统的查询方式一个一个地输入快递单号,不仅费时费力,还容易出错。有没有一种方法可以批量查询多个快递单号呢?答案是肯定的,今天我们就来介绍…

2140. 解决智力问题;1401. 圆和矩形是否有重叠;901. 股票价格跨度

2140. 解决智力问题 核心思想:动态规划。dp[i]表示解决i-n-1的问题所能获得的最高分数,注意需要倒叙遍历,因为i的状态由后面的状态转移过来的。 1401. 圆和矩形是否有重叠 核心思想:分情况讨论,圆心情况。借用别人一张图说明。 …

JWT-Token升级方案

1. 介绍 JWT是JSON Web Token的缩写,即JSON Web令牌,是一种自包含令牌。 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资…

ATFX汇市:美联储褐皮书透露就业市场新动向,美元指数中期多头趋势延续

ATFX汇市:今日2:00,美联储发布褐皮书,关于就业市场,其中提到:全国就业增长乏力,大多数地区的劳动力成本压力增长加剧,企业预计工资增长将在短期内普遍放缓。从7月、8月的非农就业报告当中&#…

数据结构和算法(2):向量

抽象数据类型 数组到向量 C/C 中,数组A[]中的元素与[0,n)内的编号一一对应,A[0],A[1],...,A[n-1];反之,每个元素均由(非负)编号唯一指代,并可直接访问A[i] 的物理地址 Ai s,s 为单…

vue-elementPlus自动按需导入和主题定制

elementPlus自动按需导入 装包 -> 配置 1. 装包(主包和两个插件包) $ npm install element-plus --save npm install -D unplugin-vue-components unplugin-auto-import 2. 配置 在vite.config.js文件中配置,配置完重启(n…

SM5202 是一款完整的采用恒定电流/恒定电压的单节锂电池线性充电器

简介: SM5202 是一款完整的采用恒定电流/恒定电压的单节锂电池线性充电器,并带有锂电池正负极反接保护功能,可以保护芯片和用户安全。由于采用了内部 PMOSFET 架构,加上防倒充电路,所以不需要外部检测电阻和隔离二极管…

Java之包装类的算法小题的练习

算法小题 练习一: 需求: 键盘录入一些1~10日之间的整数,并添加到集合中。直到集合中所有数据和超过200为止。 代码示例: public class Test1 {public static void main(String[] args) {/*键盘录入一些1~10日之间的整数&…

产业大数据应用:洞察区域产业实况,把握区域经济脉搏

​ 随着新一代信息技术的崛起,我们进入了大数据时代。在这个时代,数据作为基本生产要素不仅改变着我们的日常生活,更是在区域产业经济发展中扮演着重要角色,它赋予了政府、企业和投资者敏锐的洞察力。 一、摸清区域经济现状 基于…

智慧公厕如何实现系统管理、运行数据、业务流程的高度耦合

随着城市发展和人口增长,公共厕所成为城市更新与发展的重要环节。然而,传统的公共厕所管理方式面临诸多问题,如运营成本高、环境污染、人员管理等。为了解决这些问题,智慧公厕应运而生。智慧公厕是指利用现代科技手段,…

RPC接口测试-两种方法(Jmeter和代码)

相信很多同学在测试RPC接口时会遇到很多困难,博主前段时间在测试时也一样,算是提前踩坑啦,下面就来介绍一下测试RPC接口的方法 1.什么是RPC接口 RPC(Remote Procedure Call)是一种通信协议和模式,用于在分…