【发布时间】:2017-03-07 23:40:35
【问题描述】:
我正在尝试使用unittest 为介绍 CS 课程设置评分脚本。本质上,学生提交了一个 python 文件student.py,其中包含一些通常相互依赖的函数(这意味着func3() 可以在其计算中使用func1())。
我正在通过将student.func1 的输出与correct.func1 的输出进行比较来为每种方法编写单元测试,这种方法已知是正确的实现(来自文件correct.py)。
例如,假设func2 在其计算中使用func1。
因此,无论是默认情况下还是student.func1 未通过某些测试,我都想用correct.func1 覆盖student.func1,因此student.func2 使用已知的正确实现(因此默认情况下不仅仅是错误的)。我怎么能这样做呢? setUp() 和 tearDown() 似乎与我想要的相似,但我不知道如何在 python 中“取消导入”模块,并且到目前为止还没有找到任何相关资源。
我对@987654336@ 包含类和func1、func2 是特定类的方法以及func1 和func2 只是在student.py 中一般定义的情况感兴趣.
【问题讨论】:
-
我认为用正确的函数替换错误的函数首先是一个糟糕的举动。如果
func2依赖于func1并且func1以破坏func2的方式被破坏,那么学生应该已经注意到func2在测试中被破坏了。同样,如果他们误解了func1的规范并注意到它为时已晚,但他们的所有其他功能都在不正确的func1行为下工作,他们不应该在所有内容上都获得积分,因为您将他们的func1换成了某些东西他们的其他功能没想到。 -
@user2357112 我同意这不是一个完美的主意,我只是想这样做,因为我们当前用于查找错误的调试方法是用已知的工作代码替换损坏的代码,直到我们找出他们没有的代码'不工作。此外,此脚本根本不用于分配成绩,仅用于协助手动评分(因此,如果他们通过所有测试,则表明一切都很完美,如果只有
func7失败,也许先看看那里,等等)
标签: python python-3.x unit-testing