Skip to main content
 首页 » 编程设计

Python将随机数注入(inject)测试

2025年05月04日11tintown

我写过这样的代码:

def choice(states): 
    states = list(states) 
    rnd = random.random() 
    for state, p in states: 
        rnd -= p 
        if rnd <= 0: 
            return state 

我需要创建一些测试:

import unittest 
class Tests(unittest.TestCase): 
    def test_choice(self): 
        assertEquals(choice(states),something_equl) 

我应该如何将自己的随机数注入(inject)测试?获得确定性结果?

请您参考如下方法:

Mock random.random() 函数,示例:

import random 
import unittest 
import mock 
 
 
def choice(states): 
    states = list(states) 
    rnd = random.random() 
    for state, p in states: 
        rnd -= p 
        if rnd <= 0: 
            return state 
 
 
class Tests(unittest.TestCase): 
    @mock.patch('random.random') 
    def test_first_state_fires(self, random_call): 
        random_call.return_value = 1 
        self.assertEquals(choice([(1, 1)]), 1) 
 
    @mock.patch('random.random') 
    def test_returns_none(self, random_call): 
        random_call.return_value = 2 
        self.assertIsNone(choice([(1, 1)]))