如何模拟类中的方法

2024-06-07 07:31:45 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试为基于类的函数编写测试用例。这是我们班的骨干

class Library(object):
    def get_file(self):
        pass

    def query_fun(self):
        pass

    def get_response(self):
        self.get_file()

        response = self.query_fun()

        # some business logic here
        return response

我需要创建一个测试用例,它可以模拟query_fun并完成其余的工作。在下面尝试,但似乎不是正确的方向:

from unittest import mock, TestCase
from library.library import Library

class TestLibrary(TestCase):
    def setUp(self):
        self.library = Library()

    @mock.patch('library.library.Library')
    def test_get_response(self, MockLibrary):
        mock_response = {
            'text': 'Hi',
            'entities': 'value',
        }
        MockLibrary.query_fun.return_value = mock_response
        response = MockLibrary.get_response()
        self.assertEqual(response, mock_response)

我期望的是设置mock并调用get_response不会实际调用原始的query_fun方法,而是调用mockquery_fun


Tags: selfgetreturnresponsedeflibrary测试用例pass