从2个不同的文件模拟2个类

问题描述 投票:0回答:1

我有一个类嘲笑的例子:

worker.py

import os

class Helper:

    def __init__(self, path):
        self.path = path

    def get_folder(self):
        base_path = os.getcwd()
        return os.path.join(base_path, self.path)

    def get_path(self):
        return self.path


class Worker:

    def __init__(self):
        self.helper = Helper('db')

    def work(self):
        path = self.helper.get_path()
        print(f'Working on {path}')
        return path

和测试文件:test_worker.py

from unittest import TestCase, mock

from worker import Worker, Helper

class TestWorkerModule(TestCase):

    def test_patching_class(self):
        with mock.patch('worker.Helper') as MockHelper:
            MockHelper.return_value.get_path.return_value = 'testing'
            worker = Worker()
            self.assertEqual(worker.work(), 'testing')

只要2个类在同一文件中,测试就会返回OK。将它们分为2个文件(对于Helper类为worker_1.py和对于Worker类为worker_2.py),测试失败,并带有:

AssertionError: 'db' != 'testing'

为什么?我该如何纠正这种行为?

谢谢

unit-testing mocking python-3.7
1个回答
0
投票

假设我们有两个文件,worker.py和helper.py

© www.soinside.com 2019 - 2024. All rights reserved.