我有一个python2.7xTornado应用程序,它在运行时会提供一些RESTfulapi端点。我的项目文件夹包含许多依赖于pythonmock模块的测试用例,如下所示。fromtornado.testingimportAsyncHTTPTestCasefrommockimportMock,patchimportjsonfrommy_projectimportmy_modelclassAPITestCases(AsyncHTTPTestCase):defsetUp(self):passdeftearDown(self):pass@patch('my_project.my_model.
我正在尝试为python中的类编写单元测试。该类在init上打开一个tcp套接字。我试图对此进行模拟,以便我可以断言连接是使用正确的值调用的,但显然在单元测试中实际上并没有发生。我厌倦了MagicMock、补丁等,但我还没有找到解决方案。到目前为止,我的类(class)是这样的importsocketclassMyClass(object):def__init__(self):self.tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)self.tcp_socket.connect('0.0.0.0','6767')
我的代码组织如下:目录/A.py:fromXimportYclassA:...目录/__init__.py:from.AimportA__all__=['A']测试/test_A.py:classtest_A:@patch("dir.A.Y")deftest(self,mock_Y):....在运行tests/test_A.py时,我(如预期的那样)得到错误:AttributeError:doesnothavetheattribute'Y'问题是@patch("dir.A.y")试图在类dir.A.A中找到Y,而不是在模块dir.A(它实际存在的位置)。这显然是因为我的__init__
我一直在堆栈交换和网络上搜索如何执行此操作,但我无法理解如何模拟方法的行为。我正在尝试为我的自定义类模拟openpyxl行为和行为。这是我的尝试:importunittestfromunittest.mockimportMagicMockimportopenpyxlfromMyPythonFileimportMyClassclassTestMyClass(unittest.TestCase):deftest_myclass(self):myclass=MyClass()wb=openpyxl.workbook()ws=openpyxl.worksheet()wbPath='wbPath
我正在尝试使用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
我正在使用python-mock模拟文件打开调用。我希望能够以这种方式传递虚假数据,这样我就可以验证read()被调用以及使用测试数据,而不会在测试中访问文件系统。这是我到目前为止所得到的:file_mock=MagicMock(spec=file)file_mock.read.return_value='test'withpatch('__builtin__.open',create=True)asmock_open:mock_open.return_value=file_mockwithopen('x')asf:printf.read()这个输出是而不是'test'正如我所假设的那
pyfakefs听起来非常有用:它“最初是作为核心Python模块的适度虚假实现开发的,以支持中等复杂的文件系统交互,并于2006年9月在谷歌范围内推出。从那时起,它收到了许多(经过良好测试的)对扩展其功能和实用性的贡献,并在900多个GooglePython测试中使用。”文档目前似乎只在sourcecode的文档字符串中可用。本身。它解释了该模块提供以下元素:FakeFile:提供真实文件的外观。FakeDirectory:提供真实目录的外观。FakeFilesystem:提供真实目录层次结构的外观。FakeOsModule:使用FakeFilesystem提供一个假的os模块替换。
我有一行代码是:ifnothasattr(class.a,u'c'):return如何模拟类以便class.a.c为hasattr返回False?如果我这样做:>>>frommockimportMagicMock>>>mock_class=MagicMock(spec=[u'a'])>>>hasattr(mock_class,u'a')True>>>hasattr(mock_class,u'b')False>>>hasattr(mock_class.a,u'c')True虽然我没有指定class.a.c,但它被mock了!!! 最佳答案
在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
我正在为机器人开发软件,它通常在RaspberryPi上运行。让我们考虑两个文件的导入:motor.py(运行电机):fromRPiimportGPIOasgpio和client.py(与服务器通信并将命令传递给电机):fromrpi.motorimportMotor这两个文件都在名为rpi的目录中,其中包含一个__init__.py和一个__main__.py。RPi包不能安装在非RPi设备上。不过,我还是想测试一下client.py的功能。importunittestfromunittestimportmock#LocationAclassTestClient(unittest.T