Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 应用数据帧的模拟结果_Python_Pandas_Unit Testing - Fatal编程技术网

Python 应用数据帧的模拟结果

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_

我试图模拟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_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)