首页 / PYTHON / python-删除/覆盖导入
python-删除/覆盖导入
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-删除/覆盖导入,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1737字,纯文字阅读大概需要3分钟。
内容图文
![python-删除/覆盖导入](/upload/InfoBanner/zyjiaocheng/667/5f312fbf863c4a61872db7b4c1cfdafa.jpg)
我正在尝试使用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中“取消导入”模块,并且到目前为止还没有找到任何有关它的资源.
我对student.py包含类,而func1,func2是特定类的方法,以及仅在student.py中通用定义func1和func2的情况都感兴趣.
解决方法:
最简单的方法是将student导入模块,然后在测试失败的情况下捕获AssertionError,然后用自己的良好代码替换student模块中的错误代码:
import student
import unittest
def safe_f1():
print("Safe f1")
return 1
class TestSomething(unittest.TestCase):
def test_f1(self):
try:
self.assertEqual(student.func1(), 1)
except AssertionError:
student.func1 = safe_f1
raise
def test_f2(self):
self.assertEqual(student.func2(), 2)
这是一个失败的/无效的student.py:
def func1():
print("Bad f1")
return 2
def func2():
return func1() + 1
return 2
运行此命令时,我得到:
$python -m unittest test.py
Bad f1
FSafe f1
.
======================================================================
FAIL: test_f1 (test.TestSomething)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/austin/Code/so/test.py", line 13, in test_f1
self.assertEqual(student.func1(), 1)
AssertionError: 2 != 1
----------------------------------------------------------------------
Ran 2 tests in 0.001s
FAILED (failures=1)
内容总结
以上是互联网集市为您收集整理的python-删除/覆盖导入全部内容,希望文章能够帮你解决python-删除/覆盖导入所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。