在面向对象编程中,私有成员(通常以双下划线__
开头)是类的内部实现细节,不应该被外部直接访问。然而,在单元测试中,有时需要测试这些私有成员以确保类的正确性。以下是如何在unittest
中调用继承类的私有成员的方法:
__
开头的成员被视为私有成员,它们不能在类的外部直接访问。unittest
模块进行单元测试是一种常见的做法,它可以帮助开发者确保代码的正确性。假设我们有一个基类BaseClass
和一个继承自它的子类DerivedClass
,我们希望在单元测试中访问DerivedClass
中的私有成员。
class BaseClass:
def __init__(self):
self.__private_var = 42
def __private_method(self):
return "I am private"
class DerivedClass(BaseClass):
def get_private_var(self):
return self._BaseClass__private_var # 访问基类的私有变量
def call_private_method(self):
return self._BaseClass__private_method() # 访问基类的私有方法
import unittest
class TestDerivedClass(unittest.TestCase):
def test_private_var(self):
derived = DerivedClass()
self.assertEqual(derived.get_private_var(), 42)
def test_private_method(self):
derived = DerivedClass()
self.assertEqual(derived.call_private_method(), "I am private")
if __name__ == '__main__':
unittest.main()
_ClassName__memberName
的形式。通过这种方式,可以在类的外部访问私有成员。getattr
)来访问私有成员,但这种方法应谨慎使用。通过上述方法,可以在单元测试中有效地测试继承类的私有成员,同时保持代码的封装性和可维护性。
领取专属 10元无门槛券
手把手带您无忧上云