草庐IT

python mock - 在不妨碍实现的情况下修补方法

是否有一种干净的方法来修补对象,以便在测试用例中获得assert_call*帮助程序,而无需实际删除操作?例如,如何修改@patch行以使以下测试通过:fromunittestimportTestCasefrommockimportpatchclassPotato(object):deffoo(self,n):returnself.bar(n)defbar(self,n):returnn+2classPotatoTest(TestCase):@patch.object(Potato,'foo')deftest_something(self,mock):spud=Potato()fort

python mock - 在不妨碍实现的情况下修补方法

是否有一种干净的方法来修补对象,以便在测试用例中获得assert_call*帮助程序,而无需实际删除操作?例如,如何修改@patch行以使以下测试通过:fromunittestimportTestCasefrommockimportpatchclassPotato(object):deffoo(self,n):returnself.bar(n)defbar(self,n):returnn+2classPotatoTest(TestCase):@patch.object(Potato,'foo')deftest_something(self,mock):spud=Potato()fort

python - 模拟boto3 S3客户端方法Python

我正在尝试从boto3s3客户端对象模拟一个单一方法以引发异常。但我需要所有其他方法才能让这个类正常工作。这样我就可以在执行upload_part_copy时发生错误时测试单个异常测试。第一次尝试importboto3frommockimportpatchwithpatch('botocore.client.S3.upload_part_copy',side_effect=Exception('ErrorUploading'))asmock:client=boto3.client('s3')#Shouldreturnactualresulto=client.get_object(Buc

python - 模拟boto3 S3客户端方法Python

我正在尝试从boto3s3客户端对象模拟一个单一方法以引发异常。但我需要所有其他方法才能让这个类正常工作。这样我就可以在执行upload_part_copy时发生错误时测试单个异常测试。第一次尝试importboto3frommockimportpatchwithpatch('botocore.client.S3.upload_part_copy',side_effect=Exception('ErrorUploading'))asmock:client=boto3.client('s3')#Shouldreturnactualresulto=client.get_object(Buc

python - Django:如何动态创建模型仅用于测试

我有一个Django应用程序,它需要一个settings属性,格式为:RELATED_MODELS=('appname1.modelname1.attribute1','appname1.modelname2.attribute2','appname2.modelname3.attribute3',...)然后根据定义的attributeNHook他们的post_save信号以更新其他一些固定模型。我想测试这种行为,即使这个应用程序是项目中唯一的应用程序,测试也应该可以工作(除了它自己的依赖项,不需要安装其他包装应用程序)。如何仅为测试数据库创建和附加/注册/激活模拟模型?(或者有可能

python - Django:如何动态创建模型仅用于测试

我有一个Django应用程序,它需要一个settings属性,格式为:RELATED_MODELS=('appname1.modelname1.attribute1','appname1.modelname2.attribute2','appname2.modelname3.attribute3',...)然后根据定义的attributeNHook他们的post_save信号以更新其他一些固定模型。我想测试这种行为,即使这个应用程序是项目中唯一的应用程序,测试也应该可以工作(除了它自己的依赖项,不需要安装其他包装应用程序)。如何仅为测试数据库创建和附加/注册/激活模拟模型?(或者有可能

python - 我可以在包装函数之前修补 Python 装饰器吗?

我有一个带有装饰器的函数,我正在尝试在PythonMock的帮助下进行测试图书馆。我想使用mock.patch将真正的装饰器替换为只调用函数的模拟“绕过”装饰器。我想不通的是如何在真正的装饰器包装函数之前应用补丁。我在补丁目标上尝试了一些不同的变体,并对补丁和导入语句重新排序,但没有成功。有什么想法吗? 最佳答案 需要注意的是,这里的几个答案会为整个测试session而不是单个测试实例修补装饰器;这可能是不可取的。以下是如何修补仅通过单个测试持续存在的装饰器。我们的单元要使用不受欢迎的装饰器进行测试:#app/uut.pyfroma

python - 我可以在包装函数之前修补 Python 装饰器吗?

我有一个带有装饰器的函数,我正在尝试在PythonMock的帮助下进行测试图书馆。我想使用mock.patch将真正的装饰器替换为只调用函数的模拟“绕过”装饰器。我想不通的是如何在真正的装饰器包装函数之前应用补丁。我在补丁目标上尝试了一些不同的变体,并对补丁和导入语句重新排序,但没有成功。有什么想法吗? 最佳答案 需要注意的是,这里的几个答案会为整个测试session而不是单个测试实例修补装饰器;这可能是不可取的。以下是如何修补仅通过单个测试持续存在的装饰器。我们的单元要使用不受欢迎的装饰器进行测试:#app/uut.pyfroma

python - 如何测试或模拟 "if __name__ == ' __main_ _'"内容

假设我有一个包含以下内容的模块:defmain():passif__name__=="__main__":main()我想为下半部分编写一个单元测试(我想实现100%的覆盖率)。我发现了执行import/__name__设置机制的runpy内置模块,但我不知道如何模拟或以其他方式检查main()函数被调用。这是我迄今为止尝试过的:importrunpyimportmock@mock.patch('foobar.main')deftest_main(self,main):runpy.run_module('foobar',run_name='__main__')main.assert_c

python - 如何测试或模拟 "if __name__ == ' __main_ _'"内容

假设我有一个包含以下内容的模块:defmain():passif__name__=="__main__":main()我想为下半部分编写一个单元测试(我想实现100%的覆盖率)。我发现了执行import/__name__设置机制的runpy内置模块,但我不知道如何模拟或以其他方式检查main()函数被调用。这是我迄今为止尝试过的:importrunpyimportmock@mock.patch('foobar.main')deftest_main(self,main):runpy.run_module('foobar',run_name='__main__')main.assert_c