У меня есть эти файлы:Как высмеять возвращаемое значение метода класса, импортированного из другого класса в Python?
/foo.py
/foo2.py
/test_food.py
в foo.py, у меня есть это:
from foo2 import Foo2
class Foo(object):
def GetFoo2(self):
f = Foo2()
return f.Get()
и в foo2.py, у меня есть:
class Foo2(object):
def __init__(self):
self.myvar = "eeee"
def Get(self):
return self.myvar
В test_foo.py ,
import os, sys, json, pytest
from mock import *
from foo import Foo
def test_foo_ok(monkeypatch):
monkeypatch.setattr(Foo, "GetFoo2", lambda x:"abc")
f = Foo()
result = f.GetFoo2()
assert result == "abc"
Итак, в test_foo.py, я могу высмеять или обезвредить метод GetFoo2(). Однако, вместо этого, как я могу высмеять возвращаемое значение метода Get() Foo2 из test_foo.py без изменения кода в foo.py и foo2.py?
Я попробовал это, и я получил эту ошибку в monkeypatch.setattr (...): ImportError: модуль не назвал Foo – murvinlai
@murvinlai какой версии pytest? Я протестировал это с помощью 2.9.1, используя ваши другие файлы, названные так, как вы их описали. – jordanm