模拟一个类的私有函数,它在unittest python中使用成员变量

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (132)

我有一个简单的类,例如

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()

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

提问于
用户回答回答于

尝试:

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

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

用户回答回答于

嘲笑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')

扫码关注云+社区

领取腾讯云代金券