Deepseek API+Python测试用例一键生成与导出

发布于:2025-03-04 ⋅ 阅读:(8) ⋅ 点赞:(0)

前言

测试开发工程师在日常工作中需要处理大量测试文档,并且这些文档需要被高效分类、清洗和管理,同时结合强大的 AI 推理能力(如 DeepSeek 模型)进行智能化处理和分析。为此,我们开发了一款基于 PyQt5 的 GUI 工具,集 文件分类内容清洗内容展示DeepSeek推理结果导出 于一体。本地的deepseek-r1由于硬件受限,推理能力难以达到预期。使用三方提供的免费API接口,生成的结果较为满意。由于各位宝子所在公司模板要求不一,这里会将用例导出为json格式输出。

由于阿里云百炼的deepseek-r1接口不支持返回json格式,代码里进行了简单的适配。所有在输入提示词的时候,最好是加入以json格式输出。这样代码可以拿来即用。

本文将详细介绍这款工具的功能实现,并提供完整的源码,让测试工程师轻松实现测试文档的智能化管理与分析。
在这里插入图片描述


功能特点

  1. 智能文档分类

    • 支持常见文本格式:docxxlsxmdtxtpdf
    • 使用 阿里云百炼的deepseek-r1 模型API推理,更加智能。
    • 使用 NLTK 进行智能清洗,仅保留有效内容。
    • 支持用户手动修正分类。
    self.template_phrases = [
             "请参考以下格式", "本段用于描述", "请参照", "示意图",
             "文档信息", "版本记录", "目  录", "运行维护", "终端设备",
             "网络需求", "其他", "【注:以下内容,请做  标注】", "不涉及",
             "【注:需求规格说明书经业务、开发确认后可形成定版需求,版本号统一为V1.0】",
             "其他", "【注:以下内容,请做  标注】", "不涉及", "V1.0", "需求规格说明书",
             "【注:描述本批处理涉及的计算公式,比如退保金计算公式,尽可能列举实际案例说明】"
         ]
    
  2. 知识库目录选择与文件展示

    • 可通过下拉框选择知识库目录,本地的知识库需维护好,选取了文件后,会按预设的模板内容进行清洗,页眉、页脚及目录等信息也会被清除。
        def clean_text(self, text):
         """ 文本清洗处理 """
         # 去除标点
         text = self.clean_headers_footers(text)
         cleaned_content = self.remove_template_phrases(text)
         return cleaned_content
    
    • 联动展示所选目录下的所有文件。
    • 支持文件单选、多选或全选。

    效果如下图所示:
    在这里插入图片描述

  3. 文件内容展示与编辑

    • 拼接多个文件内容并在文本框中展示。
    • 提供输入框,供用户输入提示词,这里适配了json格式,所以可以在提示词中加入以json格式输出
  4. DeepSeek智能推理

    • 结合选取的文件内容和提示词,使用 DeepSeek 模型生成推理结果。
    • 推理完成后结果进行展示。代码如下,需要注意的是需要更换代码里的api-key的值为自己的哦:
     def generate_cases(self, content_param, prompt_param):
         # 初始化OpenAI客户端
         client = OpenAI(
             # 如果没有配置环境变量,请用百炼API Key替换:api_key="sk-xxx"
             api_key='sk-xxx',  # todo 此处需更换
             base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
         )
    
         reasoning_content = ""  # 定义完整思考过程
         answer_content = ""  # 定义完整回复
         is_answering = False  # 判断是否结束思考过程并开始回复
    
         # 创建聊天完成请求
         completion = client.chat.completions.create(
             model="deepseek-r1",  # 此处以 deepseek-r1 为例,可按需更换模型名称
             messages=[
                 {'role': 'user', 'content': f'文档内容: {content_param}, 提示词:{prompt_param}'}
             ],
             stream=True,
             # 解除以下注释会在最后一个chunk返回Token使用量
             # stream_options={
             #     "include_usage": True
             # }
         )
    
         print("\n" + "=" * 20 + "思考过程" + "=" * 20 + "\n")
    
         for chunk in completion:
             # 如果chunk.choices为空,则打印usage
             if not chunk.choices:
                 print("\nUsage:")
                 print(chunk.usage)
             else:
                 delta = chunk.choices[0].delta
                 # 打印思考过程
                 if hasattr(delta, 'reasoning_content') and delta.reasoning_content != None:
                     print(delta.reasoning_content, end='', flush=True)
                     reasoning_content += delta.reasoning_content
                 else:
                     # 开始回复
                     if delta.content != "" and not is_answering:
                         print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")
                         is_answering = True
                     # 打印回复过程
                     print(delta.content, end='', flush=True)
                     answer_content += delta.content
         return answer_content
    
  5. 结果导出

    • 支持将推理结果导出为用户指定的文件格式(如 json)。
    • 用户可自定义文件命名。

在这里插入图片描述

  1. 美观大方的 GUI 界面
    • 使用 PyQt5 开发,布局简洁美观,符合大众审美。

保存的文件内容如下图所示:

在这里插入图片描述

总结

这款工具集智能推理和结果导出为一体,功能强大,界面美观,操作简洁,帮助测试开发工程师高效管理和分析测试文档。快来体验吧,让你的测试工作更智能!后续可在文档分类、内容清洗等方向持续优化。升级后的源码已上传云盘