用熊猫读取Excel文件的单元测试

时间:2018-12-10 14:01:23

标签: excel python-2.7 unit-testing

我需要为以下代码编写一个单元测试用例:

    def read_data(self, data):

    """Read data from excel file.

    :param data:str, data in file
    :return:str, data after reading excel file
    """
    try:
        read_data = pd.read_excel(data)
        return read_data
    except Exception as e:
        logger.info("Not able to read data. Error :- {}".format(e))
        raise e

我正在上述代码中读取一个excel文件,该文件提供了如下数据: refer screenshot

那么,从Excel工作表读取后如何存储上述数据作为伪数据,以便我可以将其断言为原始数据?

谢谢

1 个答案:

答案 0 :(得分:1)

因为我有同样的需求而对此进行遗弃。

this answer可以为您指明正确的方向:

  

另请参见Saving the Dataframe输出到XlsxWriter文档中的字符串。

从示例中,您可以构建如下内容:

import pandas as pd
import io

# Create a Pandas dataframe from the data.
df = pd.DataFrame({'Data': [10, 20, 30, 20, 15, 30, 45]})

output = io.BytesIO()

# Use the BytesIO object as the filehandle.
writer = pd.ExcelWriter(output, engine='xlsxwriter')

# Write the data frame to the BytesIO object.
df.to_excel(writer, sheet_name='Sheet1', index=False)
writer.save()

# Read the BytesIO object back to a data frame - here you should use your method
xlsx_data = pd.read_excel(output)

# Assert that the data frame is the same as the original
pd.testing.assert_frame_equal(xlsx_data, df)

基本上,您可以解决问题:构建一个包含一些数据的数据框,将其保存在类似文件的临时对象中,将该对象传递给您的方法,然后断言该数据与一个相同您创建的。

注意:它需要熊猫0.17 +