【发布时间】:2021-12-10 06:02:04
【问题描述】:
我在fruit.py 脚本中有一个函数,它根据用户输入返回一个枚举。
class Selection((IntEnum):
APPLE = 0
ORANGE = 1
PEAR = 2
MELON = 3
GRAPE = 4
def get_input():
selection = int(input("Input an integer from 0 to 4: "))
fruit = Selection(selection)
return fruit
现在我想在fruit_test.py 中测试如果用户输入为空,它是否会返回任何内容/引发错误:
import unittest
from unittest.mock import patch
import fruit
class TestCase(unittest.TestCase):
@patch('builtins.input', return_value=int(''))
def test_empty_input(self, input):
result = fruit.get_input()
self.assertEqual(result, "")
但我的测试以ValueError: invalid literal for int() with base 10: '' 失败。我知道这是因为我的补丁输入int('') 错误,但我不知道如何编写正确的测试格式。有谁知道如何解决这个问题?谢谢!
【问题讨论】:
-
测试告诉你正确的事情 - 这 not 目前是正确的期望,如果输入不能被解析为你的实现不会返回空字符串整数。所以要么实现需要改变,要么测试需要反映你做期望它做什么。
标签: python python-3.x unit-testing testing python-unittest