用右边 return 修补同一个对象
patch the same object with the right return
我正在寻找对同一个对象打补丁 2 次的可能性,但在不同的方法中,我做了一个例子以加深理解。出于一个非常具体的原因,我正在尝试使用 monkeypatch 来执行此操作,而不仅仅是通过重新归因来更改属性,例如:foo.bar ="fobar2"。如果那是可能的或不可能的。提前谢谢你
class Foo:
def __init__(self):
self.bar = str()
self.bar = str()
def foo(self):
self.bar = requests.get('https://foobar.com')
return self.bar
def foo2(self):
self.bar2 = requests.get('https://foobar2.com')
return self.bar2
def test_bar(monkeypatch):
def mockreturn(requests):
return "fobar"
monkeypatch.setattr(requests, 'get', mockreturn)
foo = Foo()
assert foo.foo() == 'fobar'
assert foo.foo2() == "fobar2"
与其为 get 设置 return 值,不如尝试将其设为函数。可能是这样的:
def mock_get(url):
url_response_map = {'https://foobar.com': 'fobar'. 'https://foobar2.com': 'foobar2'}
return url_response_map(url)
monkeypatch.setattr(requests, 'get', mock_get)
我正在寻找对同一个对象打补丁 2 次的可能性,但在不同的方法中,我做了一个例子以加深理解。出于一个非常具体的原因,我正在尝试使用 monkeypatch 来执行此操作,而不仅仅是通过重新归因来更改属性,例如:foo.bar ="fobar2"。如果那是可能的或不可能的。提前谢谢你
class Foo:
def __init__(self):
self.bar = str()
self.bar = str()
def foo(self):
self.bar = requests.get('https://foobar.com')
return self.bar
def foo2(self):
self.bar2 = requests.get('https://foobar2.com')
return self.bar2
def test_bar(monkeypatch):
def mockreturn(requests):
return "fobar"
monkeypatch.setattr(requests, 'get', mockreturn)
foo = Foo()
assert foo.foo() == 'fobar'
assert foo.foo2() == "fobar2"
与其为 get 设置 return 值,不如尝试将其设为函数。可能是这样的:
def mock_get(url):
url_response_map = {'https://foobar.com': 'fobar'. 'https://foobar2.com': 'foobar2'}
return url_response_map(url)
monkeypatch.setattr(requests, 'get', mock_get)