Python 应用数据帧的模拟结果
我试图模拟dataframe.apply(函数)中调用的函数的结果,请参见下面的代码:Python 应用数据帧的模拟结果,python,pandas,unit-testing,Python,Pandas,Unit Testing,我试图模拟dataframe.apply(函数)中调用的函数的结果,请参见下面的代码: def simple_zero(value): a = value return a-value def difficult_zero(value): a = np.zeros(value.shape, dtype=int) return a @mock.patch('difficult_zero', side_effect='simple_zero') def test_
def simple_zero(value):
a = value
return a-value
def difficult_zero(value):
a = np.zeros(value.shape, dtype=int)
return a
@mock.patch('difficult_zero', side_effect='simple_zero')
def test_mock_df_apply():
df = pd.DataFrame([[4, 9],] * 3, columns=['A', 'B'])
df = df.apply(difficult_zero)
print(df)
assert 0
运行此测试会导致“TypeError:需要一个有效的目标进行修补。您提供了:'combly_zero'”。我已经试过两种方法:补丁side\u effect='simple\u zero'
和补丁return\u value=pd.DataFrame([[0,0],]*3,columns=['A',B'])
预期产量为如何模拟数据帧应用的结果
编辑:修复了simple_zero函数模拟模块的正确用法如下:
@mock.patch(__name__+'.difficult_zero', new=simple_zero)
目标“\uuuu name\uuuu+”。困难的\u0'
是表示函数定义的字符串。由于mock不知道关于当前运行时范围的任何信息,我们应该将其与函数名一起传递。在这种情况下,可以是\uuuuu name\uuuuu
。使用另一个函数的参数不是side\u effect='function'
,而是new=function
。它可能已经改变了,但我不确定
希望这有帮助
@mock.patch(__name__+'.difficult_zero', new=simple_zero)