我正在尝试对功能进行单元测试" 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()函数。
答案 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()
mocked
是test
函数的模拟版本。