草庐IT

python - 模拟通过实例使用的类方法

我正尝试使用mock修补类方法,如所述inthedocumentation.Mock对象本身工作正常,但它的方法不工作:例如,它们的属性如call_count没有更新,即使类的method_calls属性>Mock对象是。更重要的是,它们的return_value属性被忽略了:classLib:"""Inmyactualprogram,amodulethatIimport"""defmethod(self):return"real"classUser:"""TheclassIwanttotest"""defrun(self):l=Lib()returnl.method()withpat

python - 如何模拟 os.listdir 以假装 Python 中的文件和目录?

我有一个专有的存储库格式,我正在尝试开发一个Python模块来处理这些存储库。repo格式如下:/home/X/|+alpha/|+beta/|+project.conf这里,X是一个项目。alpha和beta是该项目中的文件夹,它们代表该项目中的组。group是这个repo中的一个容器,它代表的内容与这个问题无关。repoX在其根级别也有文件;project.conf是此类文件的示例。我有一个名为Project的类,它抽象了诸如X之类的项目。Project类有一个方法load()可以构建内存中的表示形式。classProject(object):defload(self):foren

Python,模拟 : raise exception

关闭。这个问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭4年前。Improvethisquestion我在从测试中的函数引发异常时遇到问题:###ImplemetationdefMethodToTest():myVar=StdObject()try:myVar.raiseError()#我想使用raiseError()函数来引发错误。我在SO上找到了几个

python - 在 Flask 单元测试中,如何模拟请求全局 `g` 对象上的对象?

我有一个Flask应用程序,它在before_filter中设置数据库连接,非常类似于this:@app.before_requestdefbefore_request():g.db=connect_db()现在:我正在编写一些单元测试,我不希望它们访问数据库。我想将g.db替换为我可以设置期望值的模拟对象。我的测试使用的是app.test_client(),正如flask文档中所展示的那样here.示例测试看起来像deftest(self):response=app.test_client().post('/endpoint',data={..})self.assertEqual(r

python - 在python中模拟文件对象或iterables

哪种方式适合模拟和测试由open()返回的迭代对象的代码,使用mock图书馆?whitelist_data.py:WHITELIST_FILE="testdata.txt"format_str=lambdas:s.rstrip().lstrip('www.')whitelist=Nonewithopen(WHITELIST_FILE)aswhitelist_data:whitelist=set(format_str(line)forlineinwhitelist_data)ifnotwhitelist:raiseRuntimeError("Can'treaddatafrom%sfile

python - 如何在 python nosetest 中绕过 "sys.exit()"?

貌似pythonnosetest遇到sys.exit()会退出,mocking这个builtin也不起作用。 最佳答案 您可以trycatchSystemExit异常(exception)。当有人调用sys.exit()时引发。withself.assertRaises(SystemExit):myFunctionThatSometimesCallsSysExit() 关于python-如何在pythonnosetest中绕过"sys.exit()"?,我们在StackOverflow上

python - 在 python 上模拟父类(super class)调用

我正在做一些单元测试,在某些时候我需要模拟一个super调用来抛出一个错误,例如:@classmethoddefmyfunc(cls,*args,**kwargs)try:super(MyClass,cls).my_function(args,kwargs)exceptMyExceptionase:#...我正在使用mocker库来模拟我的对象,但我还没有找到模拟它的方法。 最佳答案 使用unittest.mock从标准库我会做这样的事情。在你的类定义中:fromsomelibimportASuperClassclassMyClas

python - 在 python 上模拟父类(super class)调用

我正在做一些单元测试,在某些时候我需要模拟一个super调用来抛出一个错误,例如:@classmethoddefmyfunc(cls,*args,**kwargs)try:super(MyClass,cls).my_function(args,kwargs)exceptMyExceptionase:#...我正在使用mocker库来模拟我的对象,但我还没有找到模拟它的方法。 最佳答案 使用unittest.mock从标准库我会做这样的事情。在你的类定义中:fromsomelibimportASuperClassclassMyClas

python - 覆盖 Python mock 的补丁装饰器

我有一个PythonTestCase类,其中所有测试方法(一个除外)都需要以相同的方式修补对象。另一种方法需要来自同一对象的一些其他行为。我正在使用mock,所以我做了:@mock.patch('method_to_patch',mock.Mock(return_value=1))classTests(TestCase):@mock.patch('method_to_patch',mock.Mock(return_value=2))deftest_override(self):(....)但这行不通。当test_override运行时,它仍然会从类装饰器中调用修补后的行为。经过多次调试

python - 覆盖 Python mock 的补丁装饰器

我有一个PythonTestCase类,其中所有测试方法(一个除外)都需要以相同的方式修补对象。另一种方法需要来自同一对象的一些其他行为。我正在使用mock,所以我做了:@mock.patch('method_to_patch',mock.Mock(return_value=1))classTests(TestCase):@mock.patch('method_to_patch',mock.Mock(return_value=2))deftest_override(self):(....)但这行不通。当test_override运行时,它仍然会从类装饰器中调用修补后的行为。经过多次调试