【发布时间】:2022-09-27 21:44:10
【问题描述】:
我正在学习如何使用 Python。我有一个内部带有条件的函数,如果提供了无效输入,它应该重新启动循环,直到提供有效输入。
不幸的是,这种“重启”行为在我的测试中导致了无限循环(它循环提供了错误的输入)。如何暂停、中断或将输出限制为一个实例,以便测试返回的字符串?
功能:
def confirm_user_choice(choice: str):
while True:
user_response = input(f\"\\nYou chose \'{choice}\', is this correct? y/n \")
if user_response == \"y\":
return True
elif user_response == \"n\":
return False
else:
print(\"\\nSelect either \'y\' (yes) or \'n\' (no)\")
continue
测试:
import unittest
from unittest import mock
from src.utils.utils import addValues, confirm_user_choice
class TestConfirmUserChoice(unittest.TestCase):
def test_yes(self):
with mock.patch(\"builtins.input\", return_value=\"y\"):
result = confirm_user_choice(\"y\")
self.assertEqual(result, True)
def test_no(self):
with mock.patch(\"builtins.input\", return_value=\"n\"):
result = confirm_user_choice(\"n\")
self.assertEqual(result, False)
def test_invalid_input(self):
with mock.patch(\"builtins.input\", return_value=\"apple\"): <-- triggers func else case
result = confirm_user_choice(\"apple\")
self.assertEqual(result, False)
标签: python unit-testing python-unittest