栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么python模拟补丁不起作用?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么python模拟补丁不起作用?

对于 test_foo, 您没有正确使用补丁。您应该像这样使用它:

class TestFoo(TestCase):@patch.object(T1, 'foo', MagicMock(return_value='patched'))def test_foo(self):    foo = T1().get_foo()    self.assertEqual('patched', foo)

这给了我:

nosetests test_spike.py .----------------------------------------------------------------------Ran 1 test in 0.000sOK

现在,第二个示例不起作用,因为您导入了bar函数(获取对其的引用),然后尝试对其进行模拟。模拟某些内容时,您无法更改变量的内容(对原始函数的引用)。要解决此问题,您应该使用@falsetru建议的方法,例如:

from unittest import TestCaseimport unittestfrom mock import patchimport spikeclass TestFoo(TestCase):    @patch('spike.bar')    def test_bar(self, mock_obj):        mock_obj.return_value = 'patched'        value = spike.bar()        self.assertEqual('patched', value)if __name__ == "__main__":    unittest.main()

这给了我:

python test_spike.py.----------------------------------------------------------------------Ran 1 test in 0.000sOK

但是当我尝试用鼻子跑它时,我得到:

 nosetests test_spike.pyF======================================================================FAIL: test_bar (src.test_spike.TestFoo)----------------------------------------------------------------------Traceback (most recent call last):  File "/home/zilva/envs/test/local/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched    return func(*args, **keywargs)  File "/home/zilva/git/test/src/test_spike.py", line 11, in test_bar    self.assertEqual('patched', value)AssertionError: 'patched' != 'bar'----------------------------------------------------------------------Ran 1 test in 0.001sFAILED (failures=1)

发生这种情况是因为我没有在正确的位置打补丁。我的目录结构是:

test/└── src/    ├── spike.py    ├── test_spike.py    └── __init__.py

并且我从src目录运行测试,因此我应该使用项目根目录下的路径进行修补,例如:

@patch('src.spike.bar')

这会给我:

nosetests test_spike.py.----------------------------------------------------------------------Ran 1 test in 0.000sOK

或者如果我在测试目录中:

nosetests src/test_spike.py.----------------------------------------------------------------------Ran 1 test in 0.001sOK


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/516665.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号