0

我有以下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 类?

4

1 回答 1

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 类。你可以设置更健壮的fixture(Board 类测试用例),如果你花 15 分钟来了解它,那么 mocker 扩展会更直观。

于 2019-04-17T04:07:17.047 回答