我是模拟游戏的新手,并且测试python代码(无论哪种代码)。
我正在测试我的功能main.py
def get_channel_list():
sc = SlackClient(get_token())
channels_list_json = sc.api_call("channels.list")
if channels_list_json['ok'] == True:
return channels_list_json
这是我要测试的功能
我需要模拟补丁sc.api_call("channels.list")
以返回JSON对象
但我找不到这样的例子来帮助我弄清楚该怎么做。
我发现的一切都像这个示例Mocking a class method...
我认为它看起来像这样:
@patch.object(SlackClient, 'api_call')
def test_get_channel_list():
assert get_channel_list() != ""
我不必测试lib,我需要在我之前提到的函数中测试其余代码。 感谢您的帮助,我真的很愿意参加此测试。
答案 0 :(得分:2)
您需要编写一个单独的模拟函数以返回JSON对象。
您可以尝试以下方法:
@pytest.fixture
def mock_api_call(monkeypatch):
monkeypatch.setattr(SlackClient, 'api_call', lambda self, arg: {"ok": True})
def test(mock_api_call):
sc = SlackClient(get_token())
channels_list_json = sc.api_call("channels.list")
assert True == channels_list_json['ok']
def test_get_channel_list(mock_api_call):
channels_list_json = get_channels_list()
assert dict == type(channels_list_json)