Python3根据值检查打印输出

Python3根据值检查打印输出,python,python-3.x,Python,Python 3.x,我最近的任务是教小学生python 3,我在这方面还不错,但仍在学习。我认为对我来说,最简单的方法就是使用repl.it教室版,让学生们在家里访问它,如果他们愿意的话。repl.it教室包含一个自动评分系统,您可以使用unittest检查他们的代码是否正确。我已经解决了如何检查变量是否正确的问题,但是我很难检查输出。他们正在编写的代码如下 a = 5 b = 10 print( a + b ) 我需要做的是检查他们是否正在打印15。到目前为止,我已经尝试了以下方法,我已经导入了sys,uni

我最近的任务是教小学生python 3,我在这方面还不错,但仍在学习。我认为对我来说,最简单的方法就是使用repl.it教室版,让学生们在家里访问它,如果他们愿意的话。repl.it教室包含一个自动评分系统,您可以使用
unittest
检查他们的代码是否正确。我已经解决了如何检查变量是否正确的问题,但是我很难检查输出。他们正在编写的代码如下

a = 5
b = 10

print( a + b )
我需要做的是检查他们是否正在打印15。到目前为止,我已经尝试了以下方法,我已经导入了sys,unittest函数已经由repl.it创建,所以我可以操作这个函数

def test_output(self):
    output = sys.stdout
    self.assertEqual( output, 25 )

但我知道这是不对的。如果有人能帮我找到如何检查输出,那就太好了

我会尝试模拟或修补内置打印功能。然后在mock上断言它是使用正确的参数调用的。 不过,这在repl.it中可能是不可能的。你能为你的测试访问一些设置/拆卸机制吗

修补程序如下所示:

@mock.patch('builtins.print')
def test_some(self, mock_print)
    ...would expect call to pupil code here
    mock_print.assert_called_once_with (... your expectation)

我会尝试模拟或修补内置打印功能。然后在mock上断言它是使用正确的参数调用的。 不过,这在repl.it中可能是不可能的。你能为你的测试访问一些设置/拆卸机制吗

修补程序如下所示:

@mock.patch('builtins.print')
def test_some(self, mock_print)
    ...would expect call to pupil code here
    mock_print.assert_called_once_with (... your expectation)

是的,我可以编辑设置和拆卸功能是的,我可以编辑设置和拆卸功能:为什么要重新发明轮子?您的实现将比大型开发团队构建的项目更糟糕。也许是某个特定于儿童的资源?相关:为什么要重新发明轮子?您的实现将比大型开发团队构建的项目更糟糕。也许是孩子特有的资源?