【问题标题】:Python Unittest test for functions with random variables and unpredictable input具有随机变量和不可预测输入的函数的 Python Unittest 测试
【发布时间】:2015-08-21 15:16:31
【问题描述】:

功能思路:

随机 + 随机 = 输出(对或错)

功能:

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”中检索值,并且可以以更自动化的方式将每个测试修改为正确或错误。 在随机值未知且输入不可预测的情况下,测试此类类型函数的更好方法是什么。

【问题讨论】:

    标签: python function unit-testing random


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-17
        • 1970-01-01
        • 2022-01-19
        • 1970-01-01
        • 2010-09-09
        • 1970-01-01
        • 2013-08-27
        • 1970-01-01
        相关资源
        最近更新 更多