在 py 文件上模拟 属性 到 return 值而不是方法

Mocking a property on a py file, to return value instead of method

我有这个代码derived.py我想测试。

tigerContracts  = ['Element1','Element2']
def getReportingID(tigerKey):
    dig = '2' if tigerKey in tigerContracts else '0'
    return dig

我的单元测试是这样的:

class GeneratorDerived(unittest.TestCase):

    def tigerContracts(self):
        return ['Element3']

    @patch('derived.tigerContracts')
    def test_getReportingID(self, mockFunc):

        mockFunc.return_value = self.tigerContracts()

        reportingID = derived.getReportingID('XX-XX')
        self.assertEqual(reportingID,'0')

        reportingID = derived.getReportingID('Element3')
        self.assertEqual(reportingID,'2')

我的问题是,我正在获取作为 return 值的方法。
MagicMock 名称='tigerContracts' id='138171616'

相反,我希望 return 值是
['Element3']

也许这是您要找的更多内容,以获得解释: 当我们调用 self.tigerContracts() 时,会创建并返回一个新的 mock。根据我的评论:Full explanation

import unittest
import derived
from mock import patch
class GeneratorDerived(unittest.TestCase):

    def test_getReportingID(self):
        with patch('derived.tigerContracts', 'Element3'):

                reportingID = derived.getReportingID('XX-XX')
                self.assertEqual(reportingID,'0')

                reportingID = derived.getReportingID('Element3')
                self.assertEqual(reportingID,'2')