Python-模拟类初始化,实例化内部的另一个类

时间:2019-04-11 14:47:29

标签: python-3.x python-unittest.mock

我有以下python文件board.py:

 def __init__(self, language):
        self.foo = Foo(language)
        self.words = Aux(self.foo)

我正在创建这个test_file:

    @classmethod
    def setUpClass(cls):
        super().setUpClass()
        cls.board = Board('pt')

    def test_total_time(self):
        self.board.total_time(True)
        #some assert


但是我遇到了FileNotFoundError,因为Aux .___ init ____()调用了self.foo.method()来打开文件并从中读取文件。 有没有办法模拟self.foo.method()或类Aux?

1 个答案:

答案 0 :(得分:0)

您将要修补模块。如果给我测试文件的名称和要测试的类。我可以帮你解决这个问题。

在测试文件中:

import unittest

def BoardTestCase(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        super().setUpClass()
        cls.aux_mock = unittest.mock.patch('file_undertest.Aux')
        cls.board = Board('pt')

    def test_total_time(self):
        self.board.total_time(True)
        #some assert

我建议使用pytest代替标准库unittest。测试将被编写为函数,这意味着您仅在需要时才可以重用Board类。您可以设置更强大的固定装置(板级测试用例),并且如果花15分钟将头部包裹起来,mocker扩展将更加直观。