使用TestCase在input()和print()内部测试模块

时间:2016-09-29 08:28:22

标签: python-3.x testing

场合

学生的任务是写一个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)

但这不起作用。

有没有办法实现这个目标?提前谢谢。

0 个答案:

没有答案