讲师中心 微信公众号
AI工具推荐 视频效率加速

CodeGeeX为Python函数编写高质量测试【Python测试】

大涛酱_9437

大涛酱_9437

发布时间:2026-04-13 18:26:43

|

600人浏览过

|

来源于php中文网

原创

高质量Python单元测试需明确提示词、声明函数边界并隔离依赖:一、依签名与docstring生成覆盖典型值、边界值及异常路径的测试;二、用mock隔离外部依赖并验证调用;三、结合Hypothesis生成变异输入;四、依据类型注解构造精确输入并校验返回类型。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

codegeex为python函数编写高质量测试【python测试】

如果您使用CodeGeeX为Python函数生成单元测试,但产出的测试用例覆盖不全、断言缺失或无法通过,可能是由于提示词不明确、函数边界未显式声明或依赖未隔离。以下是实现高质量测试的多种方法:

一、基于函数签名与docstring反向生成测试用例

利用CodeGeeX对已有函数的签名和文档字符串进行语义解析,自动生成输入-输出对及对应断言,确保测试覆盖典型值、边界值和异常路径。

1、在函数上方添加符合Google或NumPy风格的完整docstring,明确描述参数类型、返回值、Raises异常及示例用法。

2、在CodeGeeX中输入提示词:“请为以下Python函数生成pytest测试用例,覆盖正常输入、空值、类型错误和边界条件,每个测试函数名以test_开头,使用assert验证返回值:”后粘贴函数代码。

立即学习“Python免费学习笔记(深入)”;

3、运行生成结果,检查是否包含assert isinstance(result, expected_type)及with pytest.raises(ExpectedException)等关键断言结构。

二、注入测试桩(Test Stub)与模拟(Mock)指令

当被测函数调用外部API、数据库或随机模块时,需在提示中强制要求CodeGeeX引入unittest.mock或pytest-mock,避免测试因环境依赖而失败。

1、在提示词中明确写入:“所有对外部模块(如requests、random、datetime)的调用必须使用mock.patch或MagicMock替换,并验证调用次数与参数。”

2、提供一个最小化可运行的mock模板作为上下文,例如:“@patch('requests.get') def test_fetch_data(mock_get): mock_get.return_value.json.return_value = {'id': 1}”。

3、生成后确认测试函数内存在mock_前缀的形参及mock_obj.assert_called_once_with(...)验证语句。

三、采用Property-Based Testing引导生成变异输入

借助Hypothesis库的特性,驱动CodeGeeX生成基于策略的随机输入测试,提升对隐含边界和类型组合的覆盖率。

Forge — Python Developer
Forge — Python Developer

Python开发助手 — 自动化脚本、API封装、命令行工具、数据管道、网页爬虫。经过测试的代码,包含错误处理和文档。当你需要...

下载

1、在提示词中加入:“使用hypothesis.strategies生成参数,例如@given(st.integers(min_value=0, max_value=100)),并确保每个测试函数标注@given和@settings(max_examples=10)。”

2、要求CodeGeeX为每个给定策略补充反例断言,如“assert result >= 0 and result

3、验证生成代码是否导入了from hypothesis import given, settings和from hypothesis.strategies import ...。

四、强制执行测试隔离与资源清理

防止测试间状态污染,需在提示中指定fixture生命周期控制与teardown行为,尤其针对文件操作、全局变量修改等场景。

1、提示词中声明:“所有涉及临时文件创建的测试必须使用tmp_path fixture,并在测试末尾显式调用tmp_path.joinpath(...).unlink(missing_ok=True)。”

2、若函数修改全局状态(如修改sys.path),要求生成@pytest.fixture(scope="function", autouse=True)并在yield前后分别保存与恢复状态。

3、检查生成代码中是否存在tmp_path / "test_file.txt"类路径构造,以及yield之后的clear_cache()或restore_state()调用。

五、嵌入类型注解驱动的测试生成约束

当函数已标注type hints(如def calc(x: int, y: Optional[float]) -> List[str]:),可引导CodeGeeX依据mypy兼容类型生成精确输入输出校验。

1、在提示中强调:“严格依据函数签名中的类型注解构造输入数据,例如int类型不得传入float,Optional[float]需分别测试None与非None分支。”

2、要求每个测试用例末尾添加assert语句验证返回值类型,例如assert isinstance(actual, list) and all(isinstance(s, str) for s in actual)。

3、确认生成的测试中无type: ignore注释,且所有变量名与参数名保持一致(如x_input对应x参数)。

热门AI工具

更多
Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

1771

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

4624

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

1749

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

27337

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3307

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3307

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

1203

2023.08.11

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

596

2023.08.10

Playwright 测试失败怎么办
Playwright 测试失败怎么办

Playwright测试失败专题汇集超时、定位器匹配、浏览器提前关闭、依赖与插件配置、文件上传、SSL及Docker启动等故障文章,并介绍通过截图、报告和Trace定位错误。

0

2026.10.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CodeGeex使用手册
CodeGeex使用手册

共0课时 | 0人学习

Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习

Python uv官方项目管理指南
Python uv官方项目管理指南

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn