您好我是单元测试的新手,并且想知道我将如何测试其中包含随机组件的函数?
我有以下python代码:
class Questions(object):
def __init__(self):
self.questions = {}
place_value = {
0: "Thousands",
1: "Hundreads",
2: "Tens",
3: "Units/ones",
}
def place_value(self, question, number):
selection = randint(0, 3)
number = ''.join(map(str, number))
value = number[selection]
question_text = question.format(value, number)
li = generate_a_list(question_text)
self.questions['question1'] = li
测试代码
def test_place_value():
obj = math_q.Questions()
obj.place_value("value of {0} in {1}", [1,2,3,4])
assert_equal(obj.questions["question1"], ["value of {0} in 1234"])
问题是我不知道从值=数字[选择]'中选择了哪个值1-4。上面的代码。
可以做些什么呢? 感谢。
答案 0 :(得分:0)
假设您的代码在path/my_file.py
中,您可以使用这样的模拟模块:
@mock.patch('path.my_file.randint', return_value=0)
def test_place_value(m_randint):
obj = math_q.Questions()
obj.place_value("value of {0} in {1}", [1,2,3,4])
m_randint.assert_called_once_with(0, 3)
assert obj.questions["question1"] == ...
然后只编写4个测试来处理所有情况。
旁注:我强烈建议切换到pytest。