草庐IT

python - 我可以在 python 单元测试中伪造/模拟我的模拟对象的类型吗

在我的python代码中,我检查其中一个参数的类型以确保它是我期望的类型。例如:defmyfunction(dbConnection):if(type(dbConnection)bpgsql.Connection):r['error']+='invaliddatabaseconnection'我想传递一个模拟连接以进行测试。有没有办法让模拟对象伪装成正确的类型? 最佳答案 恕我直言,看来你们不太对劲!如上所述,我可以使用鸭子打字,但有一种方法可以做我最初打算做的事情:来自http://docs.python.org/dev/libr

python - 我可以在 python 单元测试中伪造/模拟我的模拟对象的类型吗

在我的python代码中,我检查其中一个参数的类型以确保它是我期望的类型。例如:defmyfunction(dbConnection):if(type(dbConnection)bpgsql.Connection):r['error']+='invaliddatabaseconnection'我想传递一个模拟连接以进行测试。有没有办法让模拟对象伪装成正确的类型? 最佳答案 恕我直言,看来你们不太对劲!如上所述,我可以使用鸭子打字,但有一种方法可以做我最初打算做的事情:来自http://docs.python.org/dev/libr

python - 如何使用 pytest 对 python datetime.datetime.now 进行猴子补丁?

我需要测试使用datetime.datetime.now()的函数。最简单的方法是什么? 最佳答案 您需要对datetime.now函数进行monkeypatch。在下面的示例中,我正在创建可以稍后在其他测试中重复使用的fixture:importdatetimeimportpytestFAKE_TIME=datetime.datetime(2020,12,25,17,5,55)@pytest.fixturedefpatch_datetime_now(monkeypatch):classmydatetime:@classmethod

python - 如何使用 pytest 对 python datetime.datetime.now 进行猴子补丁?

我需要测试使用datetime.datetime.now()的函数。最简单的方法是什么? 最佳答案 您需要对datetime.now函数进行monkeypatch。在下面的示例中,我正在创建可以稍后在其他测试中重复使用的fixture:importdatetimeimportpytestFAKE_TIME=datetime.datetime(2020,12,25,17,5,55)@pytest.fixturedefpatch_datetime_now(monkeypatch):classmydatetime:@classmethod

python - 如何使用临时文件系统在 python 中模拟 os.walk?

我正在尝试测试一些使用os.walk的代码。我想创建一个临时的内存文件系统,我可以用os.walk将返回的示例(空)文件和目录填充它。这应该为我节省了模拟os.walk调用以模拟递归的复杂性。具体来说,我要测试的代码是:ifrecursive:log.debug("Recursivelysearchingforfilesunder%s"%path)for(dir_path,dirs,files)inos.walk(path):log.debug("Found%dfilesin%s:%s"%(len(files),path,files))forfin[os.path.join(dir_p

python - 如何使用临时文件系统在 python 中模拟 os.walk?

我正在尝试测试一些使用os.walk的代码。我想创建一个临时的内存文件系统,我可以用os.walk将返回的示例(空)文件和目录填充它。这应该为我节省了模拟os.walk调用以模拟递归的复杂性。具体来说,我要测试的代码是:ifrecursive:log.debug("Recursivelysearchingforfilesunder%s"%path)for(dir_path,dirs,files)inos.walk(path):log.debug("Found%dfilesin%s:%s"%(len(files),path,files))forfin[os.path.join(dir_p

python - 使用unittest.mock.patch时,为什么autospec默认不是True?

当您使用mock修补函数时,您可以选择将autospec指定为True:Ifyousetautospec=Truethenthemockwithbecreatedwithaspecfromtheobjectbeingreplaced.Allattributesofthemockwillalsohavethespecofthecorrespondingattributeoftheobjectbeingreplaced.MethodsandfunctionsbeingmockedwillhavetheirargumentscheckedandwillraiseaTypeErrorifthe

python - 使用unittest.mock.patch时,为什么autospec默认不是True?

当您使用mock修补函数时,您可以选择将autospec指定为True:Ifyousetautospec=Truethenthemockwithbecreatedwithaspecfromtheobjectbeingreplaced.Allattributesofthemockwillalsohavethespecofthecorrespondingattributeoftheobjectbeingreplaced.MethodsandfunctionsbeingmockedwillhavetheirargumentscheckedandwillraiseaTypeErrorifthe

python - 仅模拟对象上的单个方法

我熟悉其他语言中的其他模拟库,例如Java中的Mockito,但Python的mock库让我感到困惑。我想测试以下类(class)。classMyClassUnderTest(object):defsubmethod(self,*args):do_dangerous_things()defmain_method(self):self.submethod("Nothing.")在我的测试中,我想确保在执行main_method时调用了submethod并且使用正确的参数调用它。我不希望submethod运行,因为它会做危险的事情。我完全不确定如何开始使用它。Mock的文档非常难以理解,我

python - 仅模拟对象上的单个方法

我熟悉其他语言中的其他模拟库,例如Java中的Mockito,但Python的mock库让我感到困惑。我想测试以下类(class)。classMyClassUnderTest(object):defsubmethod(self,*args):do_dangerous_things()defmain_method(self):self.submethod("Nothing.")在我的测试中,我想确保在执行main_method时调用了submethod并且使用正确的参数调用它。我不希望submethod运行,因为它会做危险的事情。我完全不确定如何开始使用它。Mock的文档非常难以理解,我