模拟断言

时间:2019-11-25 13:21:25

标签: python-3.x mocking assert

我正在教授Python入门课程(python 3 + Jupyter),并且一直在使用nbgrader制定作业。对于那些不熟悉的人,这基本上意味着通过一组assert语句标记学生的代码。如果断言没有通过,则他们不会获得分数。

我要执行的测试之一是检查学生是否正在编写自己的测试。作为一个非常简单的示例,让我们假设他们应该定义my_function,并且他们要在其上运行的所有测试都应该是函数{中的一系列assert语句{1}},如果所有测试通过,它将返回True。

我显然需要他们的代码的一件事是do_tests()仅通过调用do_tests()就可以通过。如果我assert do_tests(),我还可以检查它是否失败。但是,我也想检查一下del my_function的内容的更多细节。第一步,我只想计算在定义中使用的do_tests()语句的数量,并打算使用assert,试图改编here中的代码。但是,我不知道如何模拟unittest.mock.patch。我尝试过类似的

assert

但是我只是得到一个错误,即main没有方法断言,并且无法弄清楚哪个模块断言应该是其中的一部分。

作为一个粗略的过渡,我最终做了

from unittest.mock import patch
with patch('__main__.assert') as mock_assert:
    do_tests()

但是很明显,这无法让我访问模拟可能提供的其他功能。

0 个答案:

没有答案
相关问题