You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3除法函数div的单元测试设计求助

Python 3除法函数div的单元测试设计求助

没问题,你的div函数写得很规范,接下来咱们用Python标准库自带的unittest模块来写单元测试——这是Python官方推荐的单元测试工具,不用额外装第三方库,上手超方便。我帮你设计覆盖所有可能场景的测试用例,同时给你完整的可运行代码示例:

首先,把你的div函数和测试代码放在同一个文件里(比如命名为div_test.py),完整代码如下:

import unittest
import math

def div(a, b):
    try:
        return a / b
    except ZeroDivisionError:
        return float('nan')

class TestDivFunction(unittest.TestCase):
    def test_positive_integer_division(self):
        # 测试正整数除以正整数的正常场景
        result = div(4, 2)
        self.assertEqual(result, 2.0)

    def test_positive_float_division(self):
        # 测试正浮点数除以正浮点数的正常场景
        result = div(5.5, 2.2)
        self.assertEqual(result, 2.5)

    def test_division_by_zero(self):
        # 测试除零场景,预期返回nan
        result = div(10, 0)
        # 注意:nan不能用==比较,要用math.isnan()判断
        self.assertTrue(math.isnan(result))

    def test_negative_divide_positive(self):
        # 测试负数除以正数
        result = div(-6, 3)
        self.assertEqual(result, -2.0)

    def test_positive_divide_negative(self):
        # 测试正数除以负数
        result = div(8, -2)
        self.assertEqual(result, -4.0)

    def test_zero_divide_non_zero(self):
        # 测试零除以非零数
        result = div(0, 5)
        self.assertEqual(result, 0.0)

    def test_negative_divide_negative(self):
        # 测试负数除以负数
        result = div(-9, -3)
        self.assertEqual(result, 3.0)

    def test_mixed_float_integer_division(self):
        # 测试整数和浮点数混合除法
        result = div(7, 2.0)
        self.assertEqual(result, 3.5)

    def test_large_integer_division(self):
        # 测试超大整数除法,验证函数处理大数的能力
        result = div(10**18, 10**9)
        self.assertEqual(result, 10**9.0)

if __name__ == '__main__':
    unittest.main()

接下来给你拆解每个测试用例的设计思路,确保咱们覆盖了所有可能出错的场景:

  • 覆盖正常除法的所有符号组合:正正、负正、正负、负负,确保符号处理正确
  • 覆盖不同数值类型:整数、浮点数、混合类型,确保类型兼容
  • 覆盖边界场景:除零(你已经处理的异常场景)、零除以非零数
  • 覆盖极端数值:超大整数,验证函数不会因为数值过大出问题

运行测试的方法也很简单:

  1. 把上面的代码保存为div_test.py
  2. 在命令行里执行python div_test.py,或者直接在IDE里运行这个文件
  3. 你会看到每个测试用例的运行结果,失败的测试会明确提示哪里出了问题

注意哦:测试nan的时候不能直接用self.assertEqual(result, float('nan')),因为根据浮点数的标准,nan和任何值(包括自己)都不相等,所以必须用math.isnan()来判断结果是否为nan。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 11:19:28