Python 如何使用pytest模拟其他函数内部的函数调用? def publish_图书(出版商): #一些计算 系数=4 打印('xyz') db_entry(factor)#我要模拟的db entry调用 打印('abc') def update(): 出版图书(“xyz”) @pytest.mark.django_db def测试_更新(模拟程序): #在这里,我无法模拟嵌套函数调用 通过
我在publish_book()中调用了db_entry()函数。如何在publish\u book内模拟db\u entry()函数调用。我想执行publish\u book()的其他计算,但只跳过(模拟)db\u entry()调用。您可以使用它来模拟函数。这里有一个例子,如果它对你有帮助的话Python 如何使用pytest模拟其他函数内部的函数调用? def publish_图书(出版商): #一些计算 系数=4 打印('xyz') db_entry(factor)#我要模拟的db entry调用 打印('abc') def update(): 出版图书(“xyz”) @pytest.mark.django_db def测试_更新(模拟程序): #在这里,我无法模拟嵌套函数调用 通过,python,django,pytest,Python,Django,Pytest,我在publish_book()中调用了db_entry()函数。如何在publish\u book内模拟db\u entry()函数调用。我想执行publish\u book()的其他计算,但只跳过(模拟)db\u entry()调用。您可以使用它来模拟函数。这里有一个例子,如果它对你有帮助的话 def db_entry(): return True def add_num(x, y): return x + y def get_status(x, y): if
def db_entry():
return True
def add_num(x, y):
return x + y
def get_status(x, y):
if add_num(x, y) > 5 and db_entry() is True:
return True
else:
return False
def test_get_stats(monkeypatch):
assert get_status(3, 3)
monkeypatch.setattr("pytest_fun.db_entry", lambda: False)
assert not get_status(3, 3)
正如您在执行第二个断言之前所看到的,我正在模拟db\u entry
函数的值以返回false。您可以使用monkeypatch模拟函数,如果需要,可以使用lambda likelambda:None
我不确定您的db_entry函数的功能,但我说它正在执行一些db查询并返回结果列表,您也可以通过返回lambda:[“foobar”]来使用lambda模拟这些结果,您可以使用lambda来模拟函数。这里有一个例子,如果它对你有帮助的话
def db_entry():
return True
def add_num(x, y):
return x + y
def get_status(x, y):
if add_num(x, y) > 5 and db_entry() is True:
return True
else:
return False
def test_get_stats(monkeypatch):
assert get_status(3, 3)
monkeypatch.setattr("pytest_fun.db_entry", lambda: False)
assert not get_status(3, 3)
正如您在执行第二个断言之前所看到的,我正在模拟db\u entry
函数的值以返回false。您可以使用monkeypatch模拟函数,如果需要,可以使用lambda likelambda:None
我不知道你的db_entry函数是做什么的,但是说它正在做一些db查询并返回结果列表,你可以通过返回
lambda:[“foobar”]
来模拟使用lambda的结果,上面的答案有用吗?如果您需要更清楚或有其他问题,请告诉我。我不确定此答案是否有帮助,因为它尚未被接受。上述答案是否有帮助?如果您需要更清楚或有其他问题,请告诉我。我不确定此答案是否有帮助,因为它尚未被接受