我正在模拟python的一个内部库类(服务器),它提供到HTTPJSON-RPC服务器的连接。但是当运行测试时,类不是在嘲笑。该类用于调用一个项目类,该项目类是有效实例化服务器类的其他类的包装器。你知道吗
我在这里提取代码的部分,让我所说的有意义。你知道吗
单元测试:
@patch('jsonrpc_requests.jsonrpc.Server')
def test_get_question_properties(self, mockServer):
lime_survey = Questionnaires()
# ...
课堂调查问卷:
class Questionnaires(ABCSearchEngine):
""" Wrapper class for LimeSurvey API"""
def get_question_properties(self, question_id, language):
return super(Questionnaires, self).get_question_properties(question_id, language)
类从类ABCSearchEnginge(ABC)
调用方法get_question_properties
。这个类初始化Server
类以提供到外部API的连接。你知道吗
ABCSearchEnginge类:
class ABCSearchEngine(ABC):
session_key = None
server = None
def __init__(self):
self.get_session_key()
def get_session_key(self):
# HERE the self.server keep getting real Server class instead the mocked one
self.server = Server(
settings.LIMESURVEY['URL_API'] + '/index.php/admin/remotecontrol')
既然测试是模仿服务器类,为什么它不是模仿?缺了什么零件?你知道吗
据我所知,您没有添加返回值。你知道吗
你把模拟值放在:
@patch('jsonrpc_requests.jsonrpc.Server')
了吗?你知道吗如果您尝试添加MagicMock,会发生什么(不要忘记添加
from mock import patch, MagicMock
)?你知道吗您还需要模拟
__init__
方法(其中Server
就是这个from jsonrpc_requests import Server
):我根据自己的理解推断出你的问题,也许你需要修正一些路径(
Mock
需要确切的路径来完成这项工作)。你知道吗相关问题 更多 >
编程相关推荐