我有一些用于单元测试的代码.但是,它加载的库需要一些鼻子测试实际上不需要的数据,因为这些数据被单元测试模拟出来.我想保护库中的文件读取,以便在进行鼻子测试的情况下不会调用它们.
是否有捷径可寻?
我可以用sys.modules或初始命令行做一些事情,但我更喜欢更优雅的东西,如果它存在的话.
正如评论中提到的,这段代码的结构是一团糟,测试的一部分是确保我在重构时不会破坏...
那么,就目前而言,(除非有人给我一个更好的答案),我正在使用:
if 'nose' not in sys.modules.keys():
<read the data>
Run Code Online (Sandbox Code Playgroud)
正确的方法是用空模拟来模拟所有具有副作用的代码(我假设您不想要什么)。
给定tested_module my_module:
def do_something_and_destroy_world():
destroy_world()
return None
Run Code Online (Sandbox Code Playgroud)
示例测试文件是:
import mock
import unittest
import my_module
class MyTest(unittest.TestCase):
def testSomethingUgly(self):
with mock.patch('my_module.destroy_world', return_value=None):
result = do_something_and_destroy_world()
self.assertIsNone(result)
Run Code Online (Sandbox Code Playgroud)
当测试运行时,断言将是正确的,并且destroy_world不会被调用 - 相反,它将被替换为具有固定返回值的空模拟。
| 归档时间: |
|
| 查看次数: |
1718 次 |
| 最近记录: |