我有这段代码可用于生成随机数量的值:
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
。
我的问题是,如何测试此功能,因为它会生成随机值?如何覆盖所有边缘情况?我甚至在这里测试什么?
答案 0 :(得分:2)
我至少可以看到四种测试方法,但可能还有更多。
leading_zeroes
是否实际按预期工作。random.seed()
使用固定值对随机数生成器进行种子设定,然后验证序列是否具有确定性并与预期序列匹配。请注意,这可能与实现有关,因此如果您的函数旨在在不同版本的Python上运行,则此测试可能无效。答案 1 :(得分:2)
random
unittest.mock.patch
https://docs.python.org/3/library/unittest.mock.html#unittest.mock.patch