1
나는 이러한 파일이 있습니다 파이썬에서 다른 클래스에서 가져온 클래스 메소드의 반환 값을 조롱하는 방법은 무엇입니까?
from foo2 import Foo2
class Foo(object):
def GetFoo2(self):
f = Foo2()
return f.Get()
및 foo2.py에서
, 내가 가진 : foo.py에서/foo.py
/foo2.py
/test_food.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() 메소드를 조롱하거나 monkeypatch 할 수 있습니다. 그러나 그 대신에 foo.py와 foo2.py에서 코드를 변경하지 않고 test_foo.py에서 Foo2의 Get() 메소드의 반환 값을 조롱 할 수 있습니까?
나는 그것을 시험해 보았고 monkeypatch.setattr (...)에서이 오류가 발생했습니다. ImportError : foo라는 모듈이 없습니다 – murvinlai
@murvinlai pytest의 버전은 무엇입니까? 필자는 2.9.1로 설명한 다른 파일들을 설명했다. – jordanm