Я могу сделать это, если заключу их в класс Python:
class Foo:
def generate_list(self):
my_list = [3, 4, 5, 6]
return my_list
def get_first_list(self):
lists = self.generate_list()
first = lists[0]
return first
class TestFoo:
def fake_generate_list(self):
return [10, 11]
def test_get_first_list(self):
foo = Foo()
foo.generate_list = self.fake_generate_list # <----
first = foo.get_first_list()
assert first == 10 # PASSED (first is 10)
Но это не удастся, если я разверну их без класса:
def generate_list():
print(generate_list)
my_list = [3, 4, 5, 6]
return my_list
def get_first_list():
lists = generate_list()
first = lists[0]
return first
# Test
def fake_generate_list():
return [10, 11]
def test_get_first_list():
generate_list = fake_generate_list # <------
first = get_first_list()
assert first == 10 # FAILED (first still 3)
Я знаю, что одна альтернатива использует
monkeypatch.setattr("myfilename.generate_list", fake_generate_list)
. Но это
Есть какая-то простая альтернатива, такая как old_function =
fake_function
.
Спасибо