在 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')
我有这个代码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')