如何检查是否正在通过鼻子测试运行代码?

时间:2016-01-04 19:43:13

标签: python nose

我有一些用于单元测试的代码。但是,它加载的库需要一些鼻子测试实际上不需要的数据,因为这些数据被单元测试模拟出来。我想保护库中的文件读取,以便在鼻子测试的情况下不会调用它们。

有一种简单的方法吗?

我可以用sys.modules或初始命令行做一些事情,但如果它存在的话,我更喜欢更优雅的东西。

2 个答案:

答案 0 :(得分:8)

正如评论中所提到的,这段代码的结构是一团糟,测试的一部分是确保我在重构时不会破坏...

所以,现在,(除非有人给我一个更好的答案),我正在使用:

if 'nose' not in sys.modules.keys():
    <read the data>

答案 1 :(得分:2)

正确的方法是使用空模拟来模拟带有副作用的所有代码(我假设你不想要的东西)。

给出tests_module my_module:

def do_something_and_destroy_world():
    destroy_world()
    return None

示例测试文件是:

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)

运行测试时,断言将是正确的,并且destroy_world不会被调用 - 而是用具有固定返回值的空模拟替换它。