具有随机变量和不可预测输入的函数的Python Unittest测试

具有随机变量和不可预测输入的函数的Python Unittest测试,python,function,unit-testing,random,Python,Function,Unit Testing,Random,功能理念: 随机+随机=输出(正确或错误) 功能: def input_gener(): """Generates questions and prints and returns status result of user input as a string""" a = random.randrange(1,10) b = random.randrange(1,10) c = input("What is the sum of {0} and {1}?

功能理念:

随机+随机=输出(正确或错误)

功能:

def input_gener():
    """Generates questions and prints and
    returns status result of user input as a string"""
    a = random.randrange(1,10)
    b = random.randrange(1,10)
    c = input("What is the sum of {0} and {1}? ".format(a,b))
    if c == a+b:
        print("{0} is right!.".format(c))
        status = "was right"
    else:
        print("{0} is wrong!.".format(c))
        status = "was wrong"            
    return status
我可以创建如下测试:

def test_res_right(self):
    #Test right value
    right_status ="was right"
    self.assertEqual(right_status,input_gener())
def test_res_wrong(self):
    wrong_status = "was wrong"
    self.assertEqual(wrong_status,input_gener())
结果取决于我将如何输入数据。除非我可以从变量“a”和“b”中检索值,并以更自动化的方式修改每个测试的正确性或错误性。
在随机值未知且输入不可预测的情况下,测试此类类型函数的更好方法是什么

与直接在函数中调用
random.randrange
不同,您应该定义一个单独的本地函数,然后在测试中模拟该函数以返回一些预期值。

您可以使用或模拟
random.randrange
为单元测试返回可重复的结果