gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:10:05 25 4
gpt4 key购买 nike

我有两个文件

spike.py

class T1(object):
def foo(self, afd):
return "foo"

def get_foo(self):
return self.foo(1)


def bar():
return "bar"

test_spike.py:

from unittest import TestCase
import unittest
from mock import patch, MagicMock
from spike import T1, bar


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

@patch('spike.bar')
def test_bar(self, mock_obj):
mock_obj.return_value = 'patched'
bar = bar()
self.assertEqual('patched', bar)


if __name__ == "__main__":
unittest.main()

当我运行 python test_spike.py 时,第一个测试用例会通过,但第二个会失败。我切换到使用 nosetests test_spike.py,然后两个都失败了。

我不明白这是怎么回事?这些情况应该都通过了。

最佳答案

使用 spike.bar 访问 bar。导入的 bar 不受 mock.patch 的影响。

from unittest import TestCase
import unittest
from mock import patch, MagicMock
from spike import T1
import spike # <----


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

@patch('spike.bar')
def test_bar(self, mock_obj):
mock_obj.return_value = 'patched'
bar = spike.bar() # <-----
self.assertEqual('patched', bar)


if __name__ == "__main__":
unittest.main()

关于python - 为什么python模拟补丁不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20242862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com