场合:
学生的任务是写一个python脚本,只用input()和print()做一些事情。
示例任务:“编写要求数字'n'的python脚本并打印'n'星的字符串。”
他写了一个这样的剧本:
solution.py
n = int(input())
print('*' * n)
我想编写python模块,测试他的脚本是否正常工作。
到目前为止我的解决方案是:
test.py 来自io import StringIO import sys
sys.stdout = StringIO()
sys.stdin = StringIO(str(2))
import riesenie
s = sys.stdout.getvalue()
if s != '**' * 2 + '\n':
raise Exception('WRONG')
else:
print("OK", file=sys.stderr)
但是,我想使用TestCase实现此行为。类似的东西:
test.py 来自unittest import TestCase
class TestSolution(TestCase):
def test_stars(self):
sys.stdout = StringIO()
sys.stdin = StringIO(str(2))
import riesenie
s = sys.stdout.getvalue()
self.assertEqual('**', s)
但这不起作用。
有没有办法实现这个目标?提前谢谢。