单元测试与文档同步生成(使用千问)

【图书介绍】《千问高效办公的方法和技巧》-CSDN博客

单元测试是"代码的体检",针对单个函数/组件,测试正常、异常、边界等场景,确保代码按预期运行,避免上线后出隐藏bug,是保障代码质量的关键;传统开发中,单元测试编写耗时且易遗漏场景,导致代码上线后出现隐藏bug。文档同步是"代码的说明书",告诉别人"这个代码做什么、怎么用、参数是什么",避免后续维护或使用时猜来猜去。千问可基于业务代码自动生成单元测试(如JUnit、pytest),覆盖正常场景、异常场景、边界场景,同时确保单元测试与代码文档同步更新,提升代码可靠性与可维护性。

示例:生成单元测试和文档

某公司后端团队要求所有新代码必须包含单元测试和文档。开发人员小郑刚写完一个计算折扣价格的函数calculate_discounted_price(original_price, discount_percent),但他不确定如何设计全面的测试用例(比如负数、超过100%的折扣)。他希望AI能帮他自动生成测试文件和标准文档,确保符合团队规范。

提示词如下:

你是一名质量保障工程师,请为以下函数生成单元测试和文档:

【编程语言】Python

【函数代码】

def calculate_discounted_price(original_price, discount_percent):

if original_price < 0:

raise ValueError("价格不能为负")

if not (0 <= discount_percent <= 100):

raise ValueError("折扣必须在0-100之间")

return original_price * (1 - discount_percent / 100)

【测试框架】pytest

【输出要求】

  1. 为函数添加符合Google Style的docstring。

  2. 生成pytest测试文件,包含3类用例:正常输入、边界值(0%, 100%)、异常输入(负价格、150%折扣)。

  3. 每个测试用例有明确断言和注释。

输出结果如下:

"""

该文件包含calculate_discounted_price函数的实现、文档和单元测试。

"""

def calculate_discounted_price(original_price, discount_percent):

"""

计算折扣后的价格。

该函数接收原始价格和折扣百分比,返回折扣后的价格。

验证输入参数的有效性,确保价格非负且折扣在0-100之间。

Args:

original_price (float): 原始价格,必须为非负数。

discount_percent (float): 折扣百分比,必须在0到100之间(包含边界值)。

Returns:

float: 折扣后的价格。

Raises:

ValueError: 当original_price为负数或discount_percent不在0-100范围内时抛出。

"""

if original_price < 0:

raise ValueError("价格不能为负")

if not (0 <= discount_percent <= 100):

raise ValueError("折扣必须在0-100之间")

return original_price * (1 - discount_percent / 100)

以下是单元测试部分

import pytest

def test_calculate_discounted_price_normal_cases():

"""

测试正常输入情况下的函数表现。

"""

测试50%折扣的情况

assert calculate_discounted_price(100, 50) == 50.0

测试25%折扣的情况

assert calculate_discounted_price(200, 25) == 150.0

测试10%折扣的情况

assert calculate_discounted_price(1000, 10) == 900.0

测试0.1%折扣的边界情况

assert abs(calculate_discounted_price(100, 0.1) - 99.9) < 0.001

测试99.9%折扣的边界情况

assert abs(calculate_discounted_price(100, 99.9) - 0.1) < 0.001

def test_calculate_discounted_price_boundary_cases():

"""

测试边界值输入情况下的函数表现。

"""

测试0%折扣(无折扣)的情况

assert calculate_discounted_price(100, 0) == 100.0

测试100%折扣(免费)的情况

assert calculate_discounted_price(100, 100) == 0.0

测试价格为0的情况

assert calculate_discounted_price(0, 50) == 0.0

def test_calculate_discounted_price_invalid_price():

"""

测试负价格输入时抛出ValueError异常。

"""

with pytest.raises(ValueError, match="价格不能为负"):

calculate_discounted_price(-10, 50)

with pytest.raises(ValueError, match="价格不能为负"):

calculate_discounted_price(-0.01, 25)

def test_calculate_discounted_price_invalid_discount():

"""

测试超出范围的折扣输入时抛出ValueError异常。

"""

测试超过100%的折扣

with pytest.raises(ValueError, match="折扣必须在0-100之间"):

calculate_discounted_price(100, 150)

测试负折扣

with pytest.raises(ValueError, match="折扣必须在0-100之间"):

calculate_discounted_price(100, -10)

测试超过100%的边界情况

with pytest.raises(ValueError, match="折扣必须在0-100之间"):

calculate_discounted_price(100, 101)

if name == "main":

运行单元测试

pytest.main([file])

相关推荐
小白学大数据9 小时前
抖音搜索页数据批量爬取,多关键词同步采集实现
爬虫·python·数据分析
西贝爱学习9 小时前
智能手机规格与价格数据集
数据分析·数据集
计算机毕业编程指导师10 小时前
基于Spark的性格行为数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘
大数据·python·数据挖掘·数据分析·spark·毕业设计·性格行为
QDYOKR16812 小时前
OKR管理系统怎么选?2026主流OKR工具深度解析
大数据·人工智能·信息可视化·数据挖掘·数据分析
PaperData1 天前
1988-2025年《中国人口和就业统计年鉴》全年份excel+PDF
数据库·人工智能·数据分析·经管
小王毕业啦1 天前
(1990-2024年)个股交易活跃度、个股换手率
大数据·人工智能·数据挖掘·数据分析·区块链·社科数据
小王毕业啦1 天前
2013-2023年 银行风险资产占比数据
大数据·人工智能·数据挖掘·数据分析·社科数据
云渊未归061 天前
Python获取GitCode项目信息
python·数据分析·开源·网络爬虫·gitcode
YJlio2 天前
2026年5月5日60秒读懂世界:五一档票房、油价调整、汤姆斯杯夺冠与全球风险观察
数据分析·django·飞书·仪表盘·多维表格·图表联动
Highcharts.js2 天前
数据处理新革命产品发布:Highcharts Orbit 公测-开启图表数据分析的新维度
信息可视化·数据挖掘·数据分析·highcharts