模拟在unittestpython中使用成员变量的类的私有函数

2024-04-26 08:14:54 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,我有一个简单的类

class Child:
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def __check(self):
        if self.age >10:
            "insert into db both age and name"
        else:
            print(self.age)

    def call(self,flag):
        if flag:
            self.__check()

现在我如何使用python中的mock测试__check(private function)


Tags: andnameselfchilddbageifinit
2条回答

模拟sys.stdout以断言打印

from StringIO import StringIO

def test_check(self):
    ch = Child('bob', 2)
    self.assertEqual(ch._Child__check(), None)
    with mock.patch('sys.stdout', new_callable=StringIO) as mock_out:
        ch = Child('bob', 2)
        self.assertEqual(ch._Child__check(), None)
        self.assertEqual(mock_out.getvalue(), '2\n')

尝试:

my_child = Child("John", 9)
my_child.call(True)

如果要在\uyu check()中尝试第一个案例,请将年龄更改为10岁以上。在

相关问题 更多 >