DeepSeek 自动化测试怎么做?用 unittest 验证金额计算函数

先定义金额函数契约,再用 unittest 验证正常值、舍入和异常输入,保留失败测试推动修复。

用 DeepSeek 写自动化测试时,先把函数的输入、舍入规则和错误条件写清楚。本例用 unittest 检查“数量乘单价”的金额函数,覆盖正常计算、零数量、舍入、负数和错误类型。

准备输入与运行环境

Python 3.11 自带 unittest 和 Decimal,无需安装测试框架。规则是数量为非负整数,单价为有限的非负十进制字符串,结果按四舍五入保留两位小数。该规则用于虚构商品演示,实际财务口径需另外确认。

DeepSeek 自动化测试怎么做?用 unittest 验证金额计算函数

给 DeepSeek 的任务说明

请为 total(qty, price) 写 unittest。qty 必须是非负整数,拒绝 bool;price 是表示非负有限数的字符串。用 Decimal,ROUND_HALF_UP 保留两位。覆盖 2*12.50、零数量、1*1.005、负数、NaN、Infinity、布尔数量与错误类型。不要把失败测试删掉来获得绿色结果。

在本地运行与检查

将下面代码保存为 example_06.py。进入保存该文件的目录,在终端执行 python example_06.py。代码应由你检查后执行,按实际字段修改。

import unittest
from decimal import Decimal, InvalidOperation, ROUND_HALF_UP

def total(qty, price):
    if type(qty) is not int or not isinstance(price, str):
        raise TypeError("数量为整数,单价为字符串")
    if qty < 0:
        raise ValueError("数量不能为负")
    try:
        value = Decimal(price)
    except InvalidOperation as exc:
        raise ValueError("单价不是十进制数") from exc
    if not value.is_finite() or value < 0:
        raise ValueError("单价必须有限且非负")
    return (value * qty).quantize(Decimal("0.01"), rounding=ROUND_HALF_UP)

class TestTotal(unittest.TestCase):
    def test_normal(self):
        self.assertEqual(total(2, "12.50"), Decimal("25.00"))
    def test_zero(self):
        self.assertEqual(total(0, "12.50"), Decimal("0.00"))
    def test_rounding(self):
        self.assertEqual(total(1, "1.005"), Decimal("1.01"))
    def test_invalid_value(self):
        for qty, price in [(-1, "2"), (1, "-2"), (1, "NaN"), (1, "Infinity"), (1, "abc")]:
            with self.subTest(qty=qty, price=price):
                with self.assertRaises(ValueError):
                    total(qty, price)
    def test_invalid_type(self):
        for qty, price in [(True, "2"), (1.5, "2"), (1, 2.0)]:
            with self.subTest(qty=qty, price=price):
                with self.assertRaises(TypeError):
                    total(qty, price)

if __name__ == "__main__":
    unittest.main(verbosity=2)

绿色结果应该意味着什么

运行会显示 5 个测试方法;subTest 下的每组异常输入也会执行。正常断言检查数值,异常断言检查拒绝条件。若把函数改成普通浮点乘法,舍入与类型测试可能失败,应先核对契约,不把期望值随意改成实际输出。

把失败交给 DeepSeek 修复

提供失败测试名称、完整异常和函数代码,要求解释违反哪条规则并给最小修正。修正后重跑全部测试,防止修好舍入却放行负值。大金额可能超过 Decimal 当前精度,本例没有定义该范围,实际系统需要添加金额上限与精度规则。

怎样确认结果正确

终端应显示 Ran 5 tests 和 OK,且退出码为 0。把舍入方式改为 ROUND_DOWN 后,test_rounding 应失败;修复后再运行恢复为 OK。已有系统还应测试真实调用链和持久化,不能把这组函数测试当成系统验收。

适用边界与常见问题

函数和价格都是人为编写的教学示例,没有真实订单或支付操作。单元测试只能覆盖已写出的契约与输入,无法证明所有业务场景正确;税费、折扣、币种和大型金额范围不在本例内。

资料依据

接口说明核验日期:2026 年 10 月 1 日。Python unittest;Python Decimal。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/30219.html

赞 (0)
AI小管家的头像AI小管家
MCP Inspector怎么调试工具?列参数、执行调用和定位错误
上一篇 1天前
MCP服务怎么用HTTP部署?从本机端点到客户端验证
下一篇 1天前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部