Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用pytest模拟其他函数内部的函数调用? def publish_图书(出版商): #一些计算 系数=4 打印('xyz') db_entry(factor)#我要模拟的db entry调用 打印('abc') def update(): 出版图书(“xyz”) @pytest.mark.django_db def测试_更新(模拟程序): #在这里,我无法模拟嵌套函数调用 通过_Python_Django_Pytest - Fatal编程技术网

Python 如何使用pytest模拟其他函数内部的函数调用? def publish_图书(出版商): #一些计算 系数=4 打印('xyz') db_entry(factor)#我要模拟的db entry调用 打印('abc') def update(): 出版图书(“xyz”) @pytest.mark.django_db def测试_更新(模拟程序): #在这里,我无法模拟嵌套函数调用 通过

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

我在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 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 like
lambda: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 like
lambda:None


我不知道你的db_entry函数是做什么的,但是说它正在做一些db查询并返回结果列表,你可以通过返回
lambda:[“foobar”]

来模拟使用lambda的结果,上面的答案有用吗?如果您需要更清楚或有其他问题,请告诉我。我不确定此答案是否有帮助,因为它尚未被接受。
上述答案是否有帮助?如果您需要更清楚或有其他问题,请告诉我。我不确定此答案是否有帮助,因为它尚未被接受