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



我用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)

现在我想为它编写单元测试。但这里的问题是我的代码需要许多用户输入。那么我如何编写这样一个单元测试,以便它可以为我的代码提供输入。

通常,当您使用任何语言编写类时,通常会将用户输入留在类之外的单独文件中。对于单元测试,您不会测试输入,而是测试类本身的逻辑。您的单元测试将如下所示:

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 中测试所有方法。单元测试测试程序的逻辑,您可以在其中测试用户可以输入的许多可能性,而不是用户输入。

最新更新