在父类中使用的模拟对象



我在单独的软件包中有两个类,其中一个是从另一个包含的。我想测试孩子课。

那么如何模拟父类中使用的外部对象?我在这一点上居住的命名空间很困惑。

class A:
    def foo(self):
        # Make some network call or something

class B(A):
    def bar(self):
        self.foo()
        ...

class BTestCase(TestCase):
    def setUp(self):
        self.unit = B()
    def test_bar(self):
         with mock.patch.object(self.unit, 'foo') as mock_foo:
             mock_foo.return_value = ...
             result = self.unit.bar()
             self.assertTrue(mock_foo.called)
             ...

要模拟父模块中导入和使用的任何内容,您需要在父模块中模拟它。

a/a.py

import subprocess
class A(object):
    def __init__(self):
        print(subprocess.call(['uname']))

b/b.py

from a.a import A
class B(A):
    def __init__(self):
        super(B, self).__init__()

在您的Unitest

from b.b import B
from unittest.mock import patch
with patch('a.a.subprocess.call', return_value='ABC'):
    B()
ABC

相关内容

  • 没有找到相关文章

最新更新