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


    工具作用:

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

    实现步骤

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

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

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

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

    详细代码

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

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

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

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

    1. import markdown
    2. from bs4 import BeautifulSoup
    3. import xmind
    4. def md_to_xmind(md_file, xmind_file):
    5. # 读取MD文件
    6. with open(md_file, 'r', encoding='utf-8') as f:
    7. md = f.read()
    8. # 解析MD文件
    9. html = markdown.markdown(md)
    10. # 创建XMind文件
    11. workbook = xmind.load(xmind_file)
    12. # 获取根节点
    13. root_topic = workbook.getPrimarySheet().getRootTopic()
    14. # 递归添加节点
    15. def add_topic(parent_topic, node):
    16. # 添加节点
    17. topic = parent_topic.addSubTopic()
    18. title = node.get('title', '')
    19. topic.setTitle(title)
    20. # 添加文本
    21. if 'html' in node:
    22. topic.setPlainNotes(node['html'])
    23. # 递归添加子节点
    24. if 'children' in node:
    25. for child in node['children']:
    26. add_topic(topic, child)
    27. # 解析HTML,并添加节点
    28. soup = BeautifulSoup(html, 'html.parser')
    29. rootmap_node = {'children': []}
    30. root_node = None
    31. current_node = None
    32. for tag in soup.children:
    33. if tag.name == 'h1':
    34. # 创建根节点
    35. root_node = {'title': tag.string, 'children': []}
    36. current_node = root_node
    37. elif tag.name == 'h2':
    38. new_node = {'title': tag.string, 'children': []}
    39. root_node['children'].append(new_node)
    40. current_node = new_node
    41. elif tag.name == 'p':
    42. current_node['html'] = str(tag)
    43. elif tag.name == 'ul':
    44. for li in tag.children:
    45. text = li.text.strip()
    46. if len(text) > 0:
    47. li_node = {'title': text, 'children': []}
    48. current_node['children'].append(li_node)
    49. elif tag.name == 'ol':
    50. for li in tag.children:
    51. text = li.text.strip()
    52. if len(text) > 0:
    53. li_node = {'title': text, 'children': []}
    54. current_node['children'].append(li_node)
    55. # 添加节点
    56. for node in root_node['children']:
    57. add_topic(root_topic, node)
    58. # 修改根节点的名称
    59. root_topic.setTitle(root_node['title'])
    60. # 保存XMind文件
    61. xmind.save(workbook, xmind_file)
    62. if __name__ == '__main__':
    63. # 示例用法 example.md为步骤1生成的文件,通过md_to_xmind方法调用将.md文件转换成xmind文件
    64. md_to_xmind('example.md', 'example.xmind')

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

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

    运行后结果:

    生成对应文件

    打开后查看如下内容

    后期集成测试工具构思:

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

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

  • 相关阅读:
    qt treeview 删除节点
    Ubuntu-22.04安装MegaCLI并查看MegaRAID的配置
    Llama2-Chinese项目:7-外延能力LangChain集成
    QT菜单栏,工具栏,状态栏
    教你一绝招:如何快速提高学习成绩--这样学习,你离考取重点高中或名牌大学很近了
    Java 中 Volatile 关键字
    【云原生之Docker实战】使用Docker部署Mango个人漫画服务器
    Cadence orcad 批量设置原理图标题栏
    电脑重装系统后Win11用户名怎么更改
    python加密Django框架代码(通过修改Cpython解释器)
  • 原文地址:https://blog.csdn.net/gzl0524/article/details/132098859