python中的单元测试 - 在测试中创建数据帧

时间:2017-09-06 17:54:36

标签: python-3.x unit-testing pandas

我正在为方法编写单元测试 - 经常操纵DataFrames。

我的数据来自API调用,我已陷入在测试中使用API​​调用的陷阱 - 我觉得这不能准确测试特定组件,因为API调用可能存在问题。

更好的做法是在每个测试中创建一个虚拟数据帧,并单独测试API调用返回预期格式的DataFrames吗?

手动制作DataFrame很痛苦,是否有一个实用程序可以将活动控制台中的DataFrame对象转换为构建它所需的代码字符串?

2 个答案:

答案 0 :(得分:1)

您始终可以将DataFrame保存为CSV文件(以及pickle等其他格式):

df.to_csv('my_data.csv')

当然重新加载它:

pd.DataFrame.from_csv('my_data.csv')

关于您的"测试数据":

问题始终是您要测试的功能。对我而言,听起来好像你只想测试特定结果等某些例程的实现,而不是你的API。由于您不打算测试您的API,因此请将其废弃,如果没有必要,请不要使用它。

如果有的话,我会写一个脚本/程序从我的API中提取数据,将其存储为我的测试数据"并将其用于我的单元测试。除非您可以动态生成测试数据(在相当长的时间内),否则您也可以这样做。

答案 1 :(得分:1)

import pandas as pd, numpy as np

np.random.seed([3,1415])
df = pd.DataFrame(np.random.randint(10, size=(3, 5)), columns=list('ABCDE'))

df

   A  B  C  D  E
0  0  2  7  3  8
1  7  0  6  8  6
2  0  2  0  4  9

然后您可以使用to_jsonread_json

pd.read_json(df.to_json())

   A  B  C  D  E
0  0  2  7  3  8
1  7  0  6  8  6
2  0  2  0  4  9