草庐IT

python - 如何在 python 中模拟 self ?

考虑以下代码。我想模拟self.get_value,它在foo.verify_client()中调用importunittestimportmockdefmock_get_value(self,value):return'client'classFoo:def__init__(self):passdefget_value(self,value):returnvaluedefverify_client(self):client=self.get_value('client')returnclient=='client'classtestFoo(unittest.TestCase):@mo

Python SQLAlchemy - 模拟模型属性的 "desc"方法

在我的应用程序中,每个模型都有一个类来保存常用查询(我猜它有点像DDD语言中的“存储库”)。这些类中的每一个都被传递给SQLAlchemysession对象,以在构造时创建查询。我在确定断言某些查询正在我的单元测试中运行的最佳方法时遇到了一些困难。使用无处不在的博客示例,假设我有一个包含列和属性“日期”和“内容”的“帖子”模型。我还有一个带有方法“find_latest”的“PostRepository”,它应该按“日期”降序查询所有帖子。它看起来像:frommyapp.modelsimportPostclassPostRepository(object):def__init__(se

python - 模拟 side_effect 迭代器用完后可以重置吗?

mock.reset_mock()不会重置副作用迭代器。有没有一种方法可以做到这一点而无需再次创建模拟?>>>frommockimportMagicMock>>>mock=MagicMock(side_effect=[1,2])>>>mock(),mock()(1,2)>>>mock()Traceback(mostrecentcalllast):File"",line1,inmock()File"C:\Python27\Lib\site-packages\mock.py",line955,in__call__return_mock_self._mock_call(*args,**kwa

python - 在 Python 中使用 Mock()

您能否给出一些在Django单元测试中使用Mock()的清晰示例?我想更清楚地了解它。更新:我想出了一些东西,所以我在下面分享。 最佳答案 第1部分:基础知识frommockimportMock模拟对象是一种对象,它是一种用于代码的Dummy我们不想被执行,但我们想知道一些信息(调用次数,调用参数)。此外,我们可能希望为该代码指定一个返回值。让我们定义一个简单的函数:deffoo(value):returnvalue+value现在我们准备为它创建一个Mock对象:mock_foo=Mock(foo,return_value='mo

python - 如何使用 Python Mock 引发异常 - 但将 Errno 设置为给定值

给定这段Python代码:elifrequest.method=='DELETE':try:os.remove(full_file)returnjsonify({'results':'purged%s'%full_file})exceptOSErrorase:ife.errno!=errno.ENOENT:raisereturnjsonify({'results':'filenotpresent:%s'%full_file})我想测试所有可能的路径,包括异常处理。使用Mock,很容易引发一个异常,我用这段代码来做到这一点:withpatch('os.remove',new=Mock(s

python - 如何使用 nosetests 测试函数在函数内被调用

我正在尝试为项目设置一些自动单元测试。我有一些功能,作为副作用偶尔会调用另一个功能。我想编写一个单元测试来测试第二个函数是否被调用,但我很困惑。下面是伪代码示例:defa(self):data=self.get()iflen(data)>3500:self.b()#Bunchofothermagic,whichiseasytotest.defb(self):serial.write("\x00\x01\x02")如何测试b()-是否被调用? 最佳答案 您可以使用mock模拟函数b模块并检查它是否被调用。这是一个例子:importun

python - 为什么 mock 会添加 __nonzero__ 方法调用?

我有一些代码可以调用集合中每个项目的一系列方法,每个方法返回一个bool值,指示成功=True/failure=False。defmonkey(some_collection,arg1,arg2):foriteminsome_collection:ifnotitem.foo(arg1,arg2):continueifnotitem.bar(arg1,arg2):continueifnotitem.baz(arg1,arg2):continue而且,这是我的单元测试示例:importmockdefTestFoo(unittest.TestCase):deftest_monkey(self

python - 如何让 mock.mock_open 引发 IOError?

我需要测试调用open的实例方法。在第一个测试用例中,我将mock.mock_open设置为按预期返回一个字符串。这非常有效。但是,我还需要测试从该函数中抛出IOError的情况。如何让mock.mock_open引发任意异常?到目前为止,这是我的方法:@mock.patch.object(somemodule,'generateDefaultKey')deftest_load_privatekey(self,genkey)mo=mock.mock_open(read_data=self.key)mo.side_effect=IOErrorwithmock.patch('__main_

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 - 在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