我有这样的东西:
import load_json
class Parent:
def func_1(self):
file = load_json("file/path.json")
file["additional data"] = "some new data"
return file
子类:
class Child(Parent):
def func_2(self):
a = self.func_1()
# do something with a
return a
我想测试func_2,但它依赖于func_1 -专门加载一个文件。我还想模拟返回的json数据,因为函数2中有额外的逻辑,(1)我不想在测试中复制(2)我也想测试(即,如果依赖的逻辑发生变化,我希望这个测试失败)。所以,我想修补文件加载,但我不确定如何修补?
我假设它是这样的,但这只会给我一个“doesn 't give attribute 'load_json'”错误。
@patch("path.to.child.load_json", return_value={"my":"file contents"})
def test_func_2():
c = Child()
assert c.func_2() == "expected value"
1条答案
按热度按时间h5qlskok1#
好的,运行调试器来查看mock如何使用该路径,这将导致:
这似乎解决了这个问题。不知道怎么花了这么长时间才解决这个问题,但我假设如果需要在子文件导入的范围中指定。