如何从模拟库实例模拟方法

时间:2018-07-09 11:14:28

标签: unit-testing mocking pytest

伙计,

我有以下情况:

tested_library:

class foo(object):

def __init__(self):
    self.bar = BuiltIn().get_library_instance('bar')

def get_status(self):
    trace_out = self.bar.some_method_from_mocked_lib()
    trace = re.findall(r'([A-Z\d]+)\s*(on|off)', trace_out )

其中BuiltIn是一个robotframework库,它在没有机器人环境的情况下无法正常工作,并且由于BuiltIn,python无法导入该库,我不得不对其进行模拟(如下)。 trace稍后仍会使用,方法get_status()返回其他内容。

测试:

import pytest
from _pytest.monkeypatch import MonkeyPatch
from mock import MagicMock
monkeypatch = MonkeyPatch()

def import_lib(monkeypatch):
    monkeypatch.setattr('robot.libraries.BuiltIn.BuiltIn.get_library_instance', MagicMock())
    import tested_library as lib
    return lib.foo

def test_getting_status():
    test_object = import_lib(monkeypatch)
    test_object.get_status()

但是还给我:

pattern = '([A-Z\\d]+)\\s*(on|off)', string = <MagicMock name='mock().some_method_from_mocked_lib()' id='140623304433104'>, flags = 0

问题是如何模拟这个,如何使用方法返回字符串而不是模拟的对象?

0 个答案:

没有答案