如何在python3中使用用户输入编写代码的单元测试

问题描述 投票:0回答:1

我在python3中制作了一个计算器。


class simple_oper:
    def __init__(self):
        pass
    @staticmethod
    def add(num1, num2):
        return num1 + num2
    @staticmethod
    def subtract(num1, num2):
        return num1 - num2
    @staticmethod
    def mul(num1, num2):
        return num1 * num2
    @staticmethod
    def div(num1, num2):
        return num1 / num2
def get_int(input_message, tm):
    num = input(input_message)
    try:
        return int(num)
    except:
        return get_int(tm, tm)
if __name__ == '__main__':
    num1 = get_int("Please enter the first number : ", "Please enter the correct number : ")
    l = ["+", "-", "*", "/"]
    #c = simple_oper
    while True:
        oper = str(input("Please enter the operand to do : "))
        if oper == "=":
            print("You typed = printing result")
            break
        elif oper not in l:
            print("Ypu typed incorrect operand. aborting and printing result")
            break
        num2 = get_int("please enter the number : ", "please enter the correct number")
        if oper == "+":
            num1 = simple_oper.add(num1, num2)
        if oper == "-":
            num1 = simple_oper.subtract(num1, num2)
        if oper == "*":
            num1 = simple_oper.mul(num1, num2)
        if oper == "/":
            num1 = simple_oper.div(num1, num2)
    print(num1)

现在我要为此编写单元测试。但是这里的问题是我的代码需要许多用户输入。因此,我该如何编写这样的单元测试以使其可以为我的代码提供输入。

python-3.x unit-testing user-input
1个回答
0
投票

[通常,当您以任何语言编写类时,通常会将用户输入置于类之外,放在单独的文件中。对于单元测试,您不会测试输入,而是测试类本身的逻辑。您的单元测试看起来像这样:

import unittest
from simple_oper import simple_oper

class Test_Simple_oper(unittest.TestCase):
    def test_add(self):
        self.assertEqual(simple_oper.add(3,3), 9)
        self.assertEqual(simple_oper.add(-10,4), 6)

if __name__ == '__main__':
    unittest.main()

你明白了,类似的东西。您将添加更多方法,直到您在simple_oper中测试所有方法为止。单元测试测试程序的逻辑,在这里您测试用户可以放置的许多可能性,而不是用户输入的可能性。

© www.soinside.com 2019 - 2024. All rights reserved.