Ich habe diese Dateien:Wie kann man den Rückgabewert einer Klassenmethode, die aus einer anderen Klasse in Python importiert wurde, vortäuschen?
/foo.py
/foo2.py
/test_food.py
in foo.py, ich habe dies:
from foo2 import Foo2
class Foo(object):
def GetFoo2(self):
f = Foo2()
return f.Get()
und in foo2.py, ich habe:
class Foo2(object):
def __init__(self):
self.myvar = "eeee"
def Get(self):
return self.myvar
In 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"
Also, in test_foo.py, bin ich in der Lage, die Methode GetFoo2() zu verspotten oder zu monkeyern. Wie kann man jedoch den Rückgabewert der Foo2-Methode Get() aus test_foo.py verspotten, ohne den Code in foo.py und foo2.py zu ändern?
Ich habe das versucht, und ich habe diesen Fehler bei monkeypatch.setattr (...): Import: Kein Modul foo – murvinlai
@murvinlai, welche Version von pytest benannt? Ich habe das mit 2.9.1 getestet, indem ich Ihre anderen Dateien benützte, wie Sie sie beschrieben haben. – jordanm