我对编程还很陌生,只是在学习如何进行单元测试。我需要测试一个返回随机值的函数。到目前为止,我已经找到建议使用特定种子值的答案,以便“随机”序列是恒定的并且可以进行比较。这是我到目前为止所得到的:
这是我要测试的功能:
import random
def roll():
'''Returns a random number in the range 1 to 6, inclusive.'''
return random.randint(1, 6)
Run Code Online (Sandbox Code Playgroud)
这是我的单元测试:
class Tests(unittest.TestCase):
def test_random_roll(self):
random.seed(900)
seq = random.randint(1, 6)
self.assertEqual(roll(), seq)
Run Code Online (Sandbox Code Playgroud)
如何在函数中为PRNG设置相应的种子值,以便可以在不将其写入函数本身的情况下对其进行测试?或者这是测试随机数生成器的完全错误的方法?
谢谢
通过使用已知种子播种 prng,您知道它将生成哪个序列,因此您可以测试该序列:
class Tests(unittest.TestCase):
def test_random_roll(self):
random.seed(900)
self.assertEqual(roll(), 6)
self.assertEqual(roll(), 2)
self.assertEqual(roll(), 5)
Run Code Online (Sandbox Code Playgroud)