Python 使用unittest模拟函数

Python 使用unittest模拟函数,python,unit-testing,mocking,python-unittest,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): @mo

我正在尝试对一个函数“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()函数

有点简单:您可以设置
返回\u值来执行此操作:

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
是您的
测试功能的模拟版本。

@user3688148如果您从控制台使用它,您必须使用
\uuuuuu main\uuuuu
而不是名称模块。@user3688148如果您认为它有用,您也应该单击向上箭头,而不仅仅是接受它:)我是新来的,所以我不能投您的赞成票(至少需要15分).