【发布时间】:2014-07-29 23:28:19
【问题描述】:
我试图尽可能清楚地表达标题。我是单元测试的新手,我掌握了一些更基本的断言类型,但有一个测试我还没有弄清楚。所以我让用户输入某种类型的输入,然后通过调用某种类型消息之前的变量来打印输出。这是测试套件正在测试的 py 文件
def get_input()
pirateInput = input("What be ye name?! ")
print("Ahoy Captain ", pirateInput)
用户输入一个名字,我只是打印出来。所以预期的输出应该是“Ahoy Captain [user input]”
这是我的测试套件
import unittest
from unittest.mock import patch
from get_input import *
class GetInputTest(unittest.TestCase):
def test_ValuePrints(self):
#patch input as 'Hook'
@patch('builtins.input', return_value='Hook'
saved_stdout = sys.stdout
try:
out = io.StringIO()
sys.stdout = out
get_input()
output = out.getvalue().strip()
assert output == 'Ahoy Captain Hook'
finally:
sys.stdout = saved_stdout
if __name__ == "__main__":
unittest.main()
所以我检查了我期望的输出,但测试确实按预期修补了输入。我不知道我是否清楚,但希望有人可以提供帮助。如果您需要更多详细信息,请告诉我。
谢谢
【问题讨论】:
-
您的代码缺少某些部分并且语法不正确。你的
GetInputTest应该至少有一种方法...
标签: python unit-testing assertions