如何使用随机种子值在 Python 中对 PRNG 进行单元测试?

Tob*_*own 5 python random

我对编程还很陌生,只是在学习如何进行单元测试。我需要测试一个返回随机值的函数。到目前为止,我已经找到建议使用特定种子值的答案,以便“随机”序列是恒定的并且可以进行比较。这是我到目前为止所得到的:

这是我要测试的功能:

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设置相应的种子值,以便可以在不将其写入函数本身的情况下对其进行测试?或者这是测试随机数生成器的完全错误的方法?

谢谢

the*_*orn 4

通过使用已知种子播种 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)