伙计,
我有以下情况:
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
问题是如何模拟这个,如何使用方法返回字符串而不是模拟的对象?