基于python实现智能用例生成工具

 更新时间:2023年09月08日 15:49:42   作者:海是倒过来的天~  
这篇文章主要为大家详细介绍了如何基于python实现智能用例生成工具,即根据输入的功能点,生成通用测试点,感兴趣的小伙伴可以跟随小编一起了解下

工具作用

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

实现步骤

工具实现主要分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.前端页面可提供出形成 通用工具

到此这篇关于基于python实现智能用例生成工具的文章就介绍到这了,更多相关python智能生成工具内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于fastapi异步接口卡死的坑及解决

    关于fastapi异步接口卡死的坑及解决

    这篇文章主要介绍了关于fastapi异步接口卡死的坑及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • 使用Python实现正态分布、正态分布采样

    使用Python实现正态分布、正态分布采样

    今天小编就为大家分享一篇使用Python实现正态分布、正态分布采样,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 详解Python list和numpy array的存储和读取方法

    详解Python list和numpy array的存储和读取方法

    这篇文章主要介绍了详解Python list和numpy array的存储和读取方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • python技巧分享Excel创建和修改

    python技巧分享Excel创建和修改

    这篇文章主要介绍了python技巧分享Excel创建和修改,openpyxl是一个读写Excel文档的Python库,能够同时读取和修改Excel文档。下面来看下文详细介绍,需要的小伙伴可以参考一下
    2022-02-02
  • PyTorch实现重写/改写Dataset并载入Dataloader

    PyTorch实现重写/改写Dataset并载入Dataloader

    这篇文章主要介绍了PyTorch实现重写/改写Dataset并载入Dataloader,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Python中转换角度为弧度的radians()方法

    Python中转换角度为弧度的radians()方法

    这篇文章主要介绍了Python中转换角度为弧度的radians()方法,是Python入门中的基础知识,需要的朋友可以参考下
    2015-05-05
  • python使用open函数对文件进行处理详解

    python使用open函数对文件进行处理详解

    今天看了open函数,看到w+ r+ a+ 这种可读可写的操作,下面这篇文章主要给大家介绍了关于python使用open函数对文件进行处理的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • Django数据库如何在原有表中添加新字段

    Django数据库如何在原有表中添加新字段

    这篇文章主要介绍了Django数据库如何在原有表中添加新字段问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)

    关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)

    这篇文章主要介绍了python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Python实现http服务器(http.server模块传参 接收参数)实例

    Python实现http服务器(http.server模块传参 接收参数)实例

    这篇文章主要为大家介绍了Python实现http服务器(http.server模块传参 接收参数)实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11

最新评论