出于某种原因,在使用Pytest时,我无法让mock.patch在任何情况下工作。它根本不进行修补。是我使用不当还是我的配置有问题?base.pydeffoo():return'foo'defget_foo():returnfoo()test_base.pyimportpytestimportmockfrompytest_mockimportmockerfrombaseimportget_foo@mock.patch('base.foo')deftest_get_foo(mock_foo):mock_foo.return_value='bar'assertget_foo()=='bar
我正在尝试使用mock和@patch装饰器为Python应用程序构建测试。给定以下目录结构:|--mypackage||--mymodule|||--__init__.py||\--somefile.py|\--myothermodule||--tests|||--__init__.py||\--test_func_to_test.py|\--__init__.py\--__init__.py文件内容在哪里:#mypackage/mymodule/somefile.pydefsome_function():return'A'#mypackage/myothermodule/__init
我的模块结构:foo:-load()#fromDBbar:-check()#withuser-take_action()我想通过模拟加载和检查来测试take_action(基本上加载值并在执行操作之前与用户进行检查)。这是模拟:mock_load=Mock(side_effects=[,,])#differentdatasetsmock_check=Mock(return_value=True)#Userapproval如何使用patch.multiple在Python2.6中实现这一点?withpatch.multiple(??):#proceedtotesttake_action
在Python中编写单元测试时模拟类或方法时,为什么需要使用@patch装潢师?我可以在没有任何补丁注释的情况下用Mock对象替换该方法。例子:classTestFoobar(unittest.TestCase):defsetUp(self):self.foobar=FooBar()#1)Withpatchdecorator:@patch.object(FooBar,"_get_bar")@patch.object(FooBar,"_get_foo")deftest_get_foobar_with_patch(self,mock_get_foo,mock_get_bar):mock_g
您能否给出一些在Django单元测试中使用Mock()的清晰示例?我想更清楚地了解它。更新:我想出了一些东西,所以我在下面分享。 最佳答案 第1部分:基础知识frommockimportMock模拟对象是一种对象,它是一种用于代码的Dummy我们不想被执行,但我们想知道一些信息(调用次数,调用参数)。此外,我们可能希望为该代码指定一个返回值。让我们定义一个简单的函数:deffoo(value):returnvalue+value现在我们准备为它创建一个Mock对象:mock_foo=Mock(foo,return_value='mo
给定这段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
我有一些代码可以调用集合中每个项目的一系列方法,每个方法返回一个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
我需要测试调用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版本、模块等)的所有详细信息都列在问题底部。如果这个问题很明显,请提前致歉,但我已经为此苦苦挣扎了好几天。希望有人可以阐明一些新的观点。我正在为我的个人项目从unittest->pytest转换单元测试。以前我使用的是内置的unittest.mock模块,但现在我正在尝试使用pytest-mock插件。我有一种潜移默化的感觉,我的测试正在将模拟对象泄漏到彼此中。原因如下:高级细节:#PythonversionPython3.5.2#Pytestversion(andplugins)pytest==3.0.7pytest-benchmark==3.1.0a
我有一个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运行时,它仍然会从类装饰器中调用修补后的行为。经过多次调试