Deepseek API+Python测试用例一键生成与导出-V1.0.2【实现需求文档图片识别与用例生成自动化】
在测试工作中,需求文档中的图片(如界面设计图、流程图)往往是测试用例生成的重要参考。然而,手动提取图片并识别内容不仅耗时,还容易出错。本文将通过一个自研小工具,结合 PaddleOCR 和大模型,自动从需求文档的指定标题下提取图片,识别图片中的文字,并生成功能测试用例。这一流程能帮助测试工程师大幅提高效率,同时确保用例生成的精准性。支持同时指定文本标题及图片标题。感兴趣的同学点击下面小卡片获取源码相对于前面的版本:
- 优化了一些报错导致闪退的情形
- 增加了图片标题输入框
- 布局调整
- 增加了行业下拉选择框

一、整体解决方案
我们将完成以下功能:
- 从 Word 文档中提取图片:通过
python-docx提取指定标题下的图片。 - 图片文字识别:使用
PaddleOCR对图片中的文字内容进行识别。 - 用例生成:将识别到的文字内容传递给大模型(如 OpenAI GPT),自动生成功能测试用例。
整个工具的实现框架如下:
+-------------------------------------------+
| 需求文档加载 |
| 读取 Word 文档 (docx) |
+-------------------------------------------+↓
+-------------------------------------------+
| 图片提取 |
| 识别指定标题下的图片 |
+-------------------------------------------+↓
+-------------------------------------------+
| 图片文字识别 |
| 使用 PaddleOCR 识别图片中的文字 |
+-------------------------------------------+↓
+-------------------------------------------+
| 用例生成 |
| 将识别文字传递给大模型生成测试用例 |
+-------------------------------------------+↓
+-------------------------------------------+
| 输出测试用例 |
| 将生成的测试用例保存为文档 |
+-------------------------------------------+
二、工具实现步骤
1. 环境准备
安装以下必要的 Python 库:
pip install python-docx paddleocr paddlepaddle openai
python-docx:用于读取 Word 文档。paddleocr和paddlepaddle:用于图片文字识别。openai:与大模型交互生成测试用例。
2. 提取 Word 文档中指定标题下的图片
在需求文档中,图片通常位于某些特定的标题下(如“登录界面设计”)。我们使用 python-docx 遍历文档内容并提取这些图片。
代码示例:
# 提取指定标题下的图片def extract_text_by_title(self, docx_path, title_keywords, table_keywords, pic_keywords):"""提取多个标题下的正文内容:param pic_keywords: 图片路径:param table_keywords: 表格路径:param docx_path: docx 文件路径:param title_keywords: 标题关键词列表:return: 提取的正文内容(按标题分组)"""doc = Document(docx_path)result = {}doc = self.remove_toc(doc) # 先清理一波目录for title_keyword in title_keywords.split(','):content = []capture = Falsefor paragraph in doc.paragraphs:text = paragraph.text.strip()if text:# 判断是否是标题if title_keyword in text and 'toc' not in paragraph.style.name.lower():capture = Truecontent.append(text)continue# 停止捕获正文内容if capture and re.match(r"^\d+(\.\d+)*\s+.+", text): # 新标题breakelif "标题" in paragraph.style.name and capture: # 遇到下一个标题则停止获取break# 捕获正文内容if capture and text:content.append(text)result[title_keyword] = "\n".join(content)for pic_keyword in pic_keywords.split(','):image_paths = self.get_target_pic(docx_path, pic_keyword)print(image_paths)if not image_paths:print("未找到目标标题下的图片")else:print(f"提取到 {len(image_paths)} 张图片:{image_paths}")# OCR 识别print("\n正在进行 OCR 识别...")ocr_results = self.perform_ocr_with_paddle(image_paths)# 输出结果ocr_results_text = ''for image_path, text in ocr_results:# print(f"\n图片路径:{image_path}")# print(f"识别内容:\n{text}")ocr_results_text += text + '--'result['识别内容'] = ocr_results_textreturn result
示例:提取“业务流程”标题下的图片

3. 使用 PaddleOCR 进行图片文字识别
使用 PaddleOCR 对提取的图片进行文字识别,并输出识别结果。
代码示例:
def perform_ocr_with_paddle(self, images):"""使用 PaddleOCR 对图片进行文字识别。"""results = []# 初始化 PaddleOCRocr = PaddleOCR(use_angle_cls=True, lang="ch") # 支持方向分类和中英文混合识别for image_path in images:try:img = cv2.imread(image_path)ocr_result = ocr.ocr(img, cls=True)text_lines = [line[1][0] for line in ocr_result[0]]results.append((image_path, "\n".join(text_lines)))except Exception as e:results.append((image_path, f"OCR 识别失败: {e}"))return results
识别结果如图:

4. 交互大模型生成测试用例
将识别到的文字内容传递给大模型(如 OpenAI GPT),并生成功能测试用例。
代码示例:
def generate_cases(self, content_param, prompt_param, job_area):# 初始化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'所在行业: {job_area if job_area else None};文档内容: {content_param}, 提示词:{prompt_param}'}],stream=True,# 解除以下注释会在最后一个chunk返回Token使用量# stream_options={# "include_usage": True# })print("\n" + "=" * 20 + "思考过程" + "=" * 20 + "\n")for chunk in completion:# 如果chunk.choices为空,则打印usageif 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_contentelse:# 开始回复if delta.content != "" and not is_answering:print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")is_answering = True# 打印回复过程print(delta.content, end='', flush=True)answer_content += delta.contentreturn answer_content
5. 输出测试用例到文档
将生成的JSON格式的测试用例保存为 Excel文档,便于后续查看和管理。
代码示例:
def json_to_excel(self, json_data, output_file):"""将任意 JSON 数据中的键作为表头,值作为值,转换为 Excel 表格:param json_data: JSON 数据(字符串或字典):param output_file: 输出的 Excel 文件路径"""# 如果输入是 JSON 字符串,将其解析为字典data_list = Noneif isinstance(json_data, str):json_data = json.loads(json_data)# 找到 JSON 数据中的列表部分(假设是字典中的第一个值)if isinstance(json_data, dict):for key, value in json_data.items():if isinstance(value, list): # 找到第一个值为列表的键data_list = valuebreakelif isinstance(json_data, list):data_list = json_dataelse:raise ValueError("JSON 数据中未找到列表部分!")if data_list:# 将列表部分转换为 DataFramedf = pd.DataFrame(data_list)# 将 DataFrame 导出为 Excel 文件df.to_excel(output_file, index=False)print(f"Excel 文件已成功生成:{output_file}")else:print("Excel 文件生成失败")
三、完整运行流程
- 准备环境:安装所需库,并将需求文档(docx 文件)和 PaddleOCR 模型准备好。
- 提取图片:运行代码提取目标标题下的所有图片。
- 文字识别:使用 PaddleOCR 对图片进行文字识别,提取关键信息。
- 生成测试用例:调用大模型,基于提取的文字内容生成功能测试用例。
- 保存结果:将生成的测试用例保存到 Word 文档中,便于后续使用。
四、工具的实际应用场景
- 自动化用例生成:通过识别需求文档中的图片内容,快速生成对应的测试用例。
- 需求验证:结合图片中的文字内容和生成的测试用例,验证需求文档的完整性和准确性。
- 团队协作:将生成的测试用例文档分发给团队成员,提高工作效率。
五、小结
通过本文的工具实现,测试工程师可以将需求文档中的图片内容自动化处理,结合 PaddleOCR 和大模型生成高质量的功能测试用例。整个流程完全落地可用,适用于日常的测试用例生成需求,帮助测试工程师从重复性工作中解放出来,更专注于高价值的测试分析工作。
快试试这个工具,将测试效率提升到新高度吧!
相关文章:
Deepseek API+Python测试用例一键生成与导出-V1.0.2【实现需求文档图片识别与用例生成自动化】
在测试工作中,需求文档中的图片(如界面设计图、流程图)往往是测试用例生成的重要参考。然而,手动提取图片并识别内容不仅耗时,还容易出错。本文将通过一个自研小工具,结合 PaddleOCR 和大模型,自…...
整形在内存中的存储(例题逐个解析)
目录 一.相关知识点 1.截断: 2.整形提升: 3.如何 截断,整型提升? (1)负数 (2)正数 (3)无符号整型,高位补0 注意:提升后得到的…...
基于变分推理与 Best‑of‑N 策略的元 Prompt 自动生成与优化框架
摘要 本文提出了一种融合变分推理与 Best‑of‑N 策略的元 Prompt 自动生成与优化框架,通过高度参数化的模板、随机扰动采样及多指标评分机制,实现从初始提示生成到最终输出的动态优化。同时,针对实际应用中对自适应参数调整、深层语义理解、…...
AI 技术在智慧农业中的应用实践
智慧农业是通过现代信息技术(如物联网、大数据、人工智能等)提升农业生产效率、降低资源消耗、改善农产品质量的现代农业模式。AI 技术在智慧农业中的应用实践涵盖了从种植到收获的全流程,以下是具体的方案和应用场景: 1. AI 在智慧农业中的应用场景 1.1 精准种植 应用场景…...
蓝牙系统的核心组成解析
一、硬件层:看得见的物理载体 1. 射频模块(Radio Frequency Module) 专业描述:工作在2.4GHz ISM频段,支持GFSK/π/4 DQPSK/8DPSK调制方式 功能类比:相当于人的"嘴巴"和"耳朵" 发射端…...
centos 7误删/bash 拯救方法
进入救援模式 1. 插入CentOS 7安装光盘,重启系统。在开机时按BIOS设置对应的按键(通常是F2等),将启动顺序调整为CD - ROM优先。 2. 系统从光盘启动后,选择“Troubleshooting”,然后选择“Rescue a Cent…...
uniapp笔记-底部和首部标签页菜单生成
逻辑 这些都是需要配置pages.json文件。 其中底部需要手动配置tarBar,如: "tabBar": {"list":[{"pagePath": "pages/index/index","text": "首页"},{"pagePath": "pages/…...
基于Gemini 生成 Gemini Embedding
在本报告中,我们介绍了Gemini Embedding,这是一款基于谷歌功能最强大的大型语言模型Gemini的先进嵌入模型。借助Gemini的多语言和代码理解能力,Gemini Embedding能够为多种语言和文本模态的文本生成高度通用的嵌入表示。Gemini Embedding生成的表示可以预先计算并应用于多种…...
SpringBoot 和vue前后端配合开发网页拼图10关游戏源码技术分享
今天分享一个 前后端结合 的网页游戏 开发项目源码技术。 这也是我第一次写游戏类的程序,虽然不是特别复杂的游戏,但是是第一次写,肯定要记录一下了,哈哈。 游戏的内容 就是 我们显示中玩的那个 拼图碎片的 游戏,类似下…...
OpenCV计算摄影学(21)非真实感渲染之边缘保留滤波器edgePreservingFilter()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 滤波是图像和视频处理中的基础操作。边缘保留平滑滤波器被广泛应用于多种不同场景[98]。 cv::edgePreservingFilter 是一种边缘保留滤波器&#…...
Qemu 详解与 ARM 虚拟机搭建指南
1. Qemu 是什么? Qemu(Quick Emulator)是一款开源的机器模拟器和虚拟化工具,支持多种硬件架构(如 x86、ARM、PowerPC 等)。它的核心功能包括: 动态指令翻译:将不同架构的指令实时翻…...
JVM并发编程AQSsync锁ReentrantLock线程池ThreadLocal
并发编程2 synchronized锁实现**AQS****ReentrantLock实现****JUC 常用类**池的概念 ThreadLocalThreadLocal原理内存泄露强引用:软引用弱引用虚引用ThreadLocal内存泄露 synchronized锁实现 synchronized是一个关键字,实现同步,还需要我们提供一个同步锁对象,记录锁状态,记录…...
CMake学习笔记(三):静态库,动态库的生成和使用
一:动态库 接下来我们简单的讲解下动态库的建立和使用:在后面的项目的开发过程中,我们使用第三方库或者我们跑这个项目的时候我们总会看到一些.so的文件,这些就是所谓的动态库,里面的内容就是编译后的源文件,是程序运行时被加载和…...
《Classifier-Free Diffusion Guidance》的核心观点与方法
介绍《Classifier-Free Diffusion Guidance》的核心观点与方法 在扩散模型(Diffusion Models)的研究中,如何在生成样本的质量与多样性之间找到平衡一直是核心挑战之一。传统的生成模型(如GANs或Glow)通过截断…...
什么是数学建模?数学建模是将实际问题转化为数学问题
数学建模是将实际问题转化为数学问题,并通过数学工具进行分析、求解和验证的过程。 一、数学建模的基本流程 问题分析 • 明确目标:确定需要解决的核心问题。 • 简化现实:识别关键变量、忽略次要因素。 • 定义输入和输出:明确模…...
唤起“队列”的回忆
又来博客记录自己的学习心得了,嘿嘿嘿(^~^) 目录 队列的概念和结构: 队列的创建和初始化: 队列入栈: 队列出栈: 队列的销毁: 取队头和队尾数据: 结语: 队列的概念…...
Linux(8.4)NFS
文章目录 一、概念二、详解NFS1)软件名2)服务名3)配置文件4)端口号5)相关命令 三、部署NFS一、NFS服务端1)**配置源(本地或者网络源)**2)2、安装NFS**3)启动服…...
【位运算】速算密钥:位运算探秘
文章目录 前言例题一、判定字符是否唯一二、丢失的数字三、两整数之和四、只出现⼀次的数字 II五、消失的两个数字 结语 前言 什么是位运算算法呢? 位运算算法是以位运算为核心操作,设计用来高效解决特定问题的一系列计算步骤集合。它巧妙利用位运算直接…...
STM32G070CBT6读写FLASH中的数据
向FLASH中写入数据函数 /*函数说明:向FLASH中写数据形参:addr-要写入数据的起始地址 data-准备写入数据 len-数据大小返回值:1-成功,0-失败 */ uint8_t FlashWriteData(uint64_t addr,uint8_t data[],size_t len) {uint32_t Fir…...
算法刷题记录——LeetCode篇(4) [第301~400题](持续更新)
(优先整理热门100及面试150,不定期持续更新,欢迎关注) 322. 零钱兑换 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的最少的硬币个数。如果没有任何…...
目标检测任务,如何区分两个相近似的目标
首先,要了解清楚检测的场景下,肉眼能否区分出目标的差异性。 如果可以区分,那观察数据周围背景的差异是否较大,可以先通过添加样本来提升模型的检测精度。添加样本时一定要注意,样本标注的准确性,样本的丰…...
中国在 AI 上超越美国,需要另辟蹊径
在过去的几年里,以大型语言模型(LLM)为核心的人工智能浪潮席卷全球。美国凭借其雄厚的科研基础、顶尖的技术公司以及掌握着关键硬件资源,牢牢占据了这一领域的领先地位。与此同时,中国在AI领域的进步虽然迅速ÿ…...
【实习经历Two:参与开源项目,学习并应用Git】
前端参与开源项目中使用过的git 1.参与开源项目(必备技能——git) 参与开源项目首先需要进入自己想参加的项目页面 点击右边的Fork即可复制到自己的仓库 像个人开发时常用的add、commit和push等命令就不过多介绍了,在这里主要是想记录一下自己作为从未…...
AD绘图基本操作
一、基本操作 注意:快捷键都要在英文模式下才能生效 1、移动 按住鼠标右键移动 2、切换桌面栅格距离 G 3、英寸和毫米 尺寸切换 Q 4、元件在3D模式下的移动 3D视角鼠标左键只起到选择元器件并移动之的功能, 单纯鼠标右键只能平移桌面 shift鼠…...
6k ± 1 规则
6k 1 规则 是基于对质数分布规律的观察和数学证明得出的。它指出,除了 2 和 3 之外,所有质数都可以表示为 6k 1 的形式,其中 k 是正整数。以下是详细的证明过程: 1. 质数的基本性质 质数是指大于 1 的自然数,且只能…...
AcWing 5960:输出前k大的数 ← 小根堆
【题目来源】 https://www.acwing.com/problem/content/5963/ 【题目描述】 给定一个长度为 n 的数组 a1,a2,…,an,统计前 k 大的数并且把这 k 个数从大到小输出。 【输入格式】 第一行包含整数 n。 第二行包含 n 个整数 a1,a2,…,an。 第三行包含整数 k。…...
V2X验证
1. 标准和规范验证 欧洲对 DSRC 和 V2X 系统有一系列的标准和规范,主要由 ETSI (European Telecommunications Standards Institute) 和 IEEE 等组织制定。验证通常包括以下标准和规范: ETSI EN 302 571:这是DSRC在欧洲的主要标准,规定了DSRC系统的技术要求和操作条件。ET…...
创建表空间和表
创建表 1.业务背景 在城市的住宅小区和商业区域中,需要对业主的用水情况及费用缴纳进行有效管理。业主类型涵盖普通居民、商业用户等不同类别(业主类型表),每种类型对应不同的水价标准(价格表)。区域表记…...
dfs(十二)21. 合并两个有序链表 递归解决
21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2: 输入:l1 [], l2 [] …...
51单片机指令系统入门
目录 基本概念讲解 一、机器指令 二、汇编指令 (一)汇编指令的一般格式 (二)按字节数分类的指令 三、高级指令 总结 基本概念讲解 指令是计算机(或单片机)中 CPU 能够识别并执行的基本操作命令…...
