测试生成随机值的函数

1 投票
2 回答
688 浏览
提问于 2025-04-18 06:15

我有一段代码,可以用来生成随机数值:

import random
def random_digit_number(num_of_digits, leading_zeroes=True):
    """
    Generate a random number with specified number of digits
    """
    if not leading_zeroes:
        return random.randint(10**(num_of_digits-1), 10**num_of_digits-1)
    else:
        return str("%0" + str(num_of_digits) + "d") % random.randint(0, 10**num_of_digits-1)

我需要为这个函数写一个 unittest(单元测试)。

我的问题是,既然这个函数会生成随机值,我该怎么测试它呢?我该如何考虑所有的边界情况?我到底应该测试些什么呢?

2 个回答

2
  1. 在这个模块中使用 unittest.mock.patch 来模拟 random
  2. 多次运行这个函数,确保每次输出都在预期的范围内。

https://docs.python.org/3/library/unittest.mock.html#unittest.mock.patch

2

我能想到至少四种方法来测试这个功能,不过可能还有更多的方法。

  1. 测试它是否能根据不同的输入生成正确数量的值,包括请求生成非常多的随机数的情况。
  2. 测试当请求的值的数量是负数时,它是否能正常工作。
  3. 测试一下标志 leading_zeroes 是否真的按预期那样工作。
  4. 用一个固定的值来设置随机数生成器,使用 random.seed(),然后确认生成的随机数序列是确定的,并且和预期的序列一致。需要注意的是,这可能会依赖于具体的实现,所以如果你的函数要在不同版本的Python上运行,这个测试可能就不太有效。

撰写回答