使用unittest模拟一个函数

时间:2014-11-12 08:32:39

标签: python unit-testing mocking python-unittest

我正在尝试对功能进行单元测试" check()"它调用另一个函数" test()"。

我想模拟test()并用函数mocked()代替它。

这是我的代码:

import unittest
import mock

def check():
    return test()
def test():
    return "test"

def mocked():
    return "mocked"

class CheckTest(unittest.TestCase):
    @mock.patch(target='test.test', spec=True, new_callable=mocked)
    def test_test(self, mocked):
        self.assertEqual(check(), "mocked")




if __name__ == '__main__':
    unittest.main()

我想要的是将test()返回的字符串替换为我的字符串。我无法覆盖或更改test()或check()函数。

1 个答案:

答案 0 :(得分:2)

这有点简单:您可以设置return_value来执行此操作:

import unittest
import mock

def check():
    return test()
def test():
    return "test"

class CheckTest(unittest.TestCase):
    @mock.patch('__main__.test')
    def test_test(self, mocked):
        mocked.return_value = "mocked"
        self.assertEqual(check(), "mocked")


if __name__ == '__main__':
    unittest.main()

mockedtest函数的模拟版本。