这是我下面的方法,它返回一个数据框
def refactorReport( df):
"""Enhance with additional information as needed"""
for userclass in [ 'ClassA', 'ClassB', 'ClassC' ]:
df[ '%s_Region'%userclass ] = df[ userclass ].apply(lambda x: commutils.UserNameMapper( x ).Region() )
return df
我该如何嘲笑这个
commutils.UserNameMapper(x)
?
我尝试过这个,但两者都给了我“预期的自我参数”:
class DummyUserNameMapper():
def __init__( self, thename ):
self.thename = thename
def Region( self ):
print(self.thename)
return 'Region%s'%self.thename[-1]
class ModuleTests(unittest.TestCase):
def test_refactorReport(self):
with mock.patch("commutils.UserNameMapper", return_value=DummyUserNameMapper):
print(refactorReport(self.records))
@mock.patch('commutils.UserNameMapper')
def test_refactorReport_New(self, mockUser):
mockUser.return_value = DummyUserNameMapper
print(refactorReport(self.records))
哪里
self.records
>>> import pandas as pd
>>> data = [()]
>>> data = [
... ('Name 1', 'Apple', 'Mango', 'Orange'),
... ('Name 2', 'Pear', 'Apple', 'Banana'),
... ('Name 3', 'Banana', 'Mango', 'Orange'),
... ('Name 4', 'Apple', 'Pear', 'Orange'),
... ('Name 5', 'Pear', 'Mango', 'Orange'),]
...
>>> df = pd.DataFrame(data,columns=['Name', 'ClassA', 'ClassB', 'ClassC'])
不确定之前出了什么问题,但这有效:
def test_refactorReport(self):
with mock.patch("commutils.UserNameMapper", return_value=DummyUserNameMapper):
print(refactorReport(self.records))