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

大涛酱_9437

大涛酱_9437

2026-04-13

600人浏览

原创

高质量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验证返回值:”后粘贴函数代码。

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生成基于策略的随机输入测试,提升对隐含边界和类型组合的覆盖率。

361SCAN security check your skill python scripts
361SCAN security check your skill python scripts

扫描并分析已安装技能,用于查看指定技能目录的名称、描述和详情,或列出所有已安装的技能。

下载

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参数)。

Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

codegeex python python函数

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

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

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

2023.07.20

1771

4

python能做什么
python能做什么

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

2023.07.25

4604

7

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

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

2023.07.31

1729

3

python教程
python教程

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

2023.08.03

27177

23

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

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

2023.08.04

3287

5

python eval
python eval

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

2023.08.04

3287

5

scratch和python区别
scratch和python区别

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

2023.08.11

1203

5

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

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

2023.08.10

596

4

python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2563

5

热门下载

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

精品课程

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

共0课时 | 0人学习

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

共0课时 | 0人学习

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

共0课时 | 0人学习