有没有办法断言某人使用 pytest 输入了正确的代码?

问题描述 投票:0回答:1

在过去的两年里,我在课堂上使用了一个名为 CodeKeyz 的程序来教授代码语法,同时我有时间专门教授 Python 的计算思维方面。

欢迎。他们走了。我仍然拥有这些模块,但我实际上无法编辑它们或更改任何内容,并且我预计它们很快就会永远消失。

所以我正在使用 pytest 构建一个新套件。

(如果你有其他的想法来进行这种教学,我洗耳恭听。这对于让他们能够用Python编写代码非常有效,我真的不想放弃,但我没有一个选择。)

我过去使用过 TDD,但我不知道如何进行这个。我想看看学生添加到代码中的内容是否与我想要的相同。

这是我在 main.py 中的代码

def print1(x):
 return print("Hello world")

这是我在测试页面中的内容。

def test_print1():
  assert print1 is "Hello world"

我相当确定这是错误的。

我想要它做的是告诉我他们已经投入了

print("Hello world")

一旦我成功完成其中一项,我就能获得其余的。这应该不难。有什么想法吗?

python pytest
1个回答
0
投票

我想检查执行是否会输出字符串

然后你必须暂时将程序的标准输出流重定向到临时字符串并执行该函数并比较结果..

def test_print1():
   with contextlib.redirect_stdout(io.StringIO()) as f:
       print1()
   assert f.getvalue() == "Hello world"

参见 https://docs.python.org/3/library/contextlib.html#contextlib.redirect_stdout

© www.soinside.com 2019 - 2024. All rights reserved.