【问题标题】:How to write unittest for function that accepts csv file? [duplicate]如何为接受 csv 文件的函数编写单元测试? [复制]
【发布时间】:2020-04-02 00:06:38
【问题描述】:

我的函数是这样的

import pandas as pd 

def my_function( file_path ):
    df = pd.read_csv( filepath )
    #some other operations on df here 
    return df 

我不想访问外部文件进行单元测试。有什么方法可以动态创建一个像对象一样的 csv 文件来进行单元测试。

【问题讨论】:

标签: python pandas unit-testing


【解决方案1】:

就个人而言,我认为最好重写你的函数,以便它接受DataFrame,对DataFrame 进行一些计算,然后返回DataFrame。从这个意义上说,您使您的函数更加原子化,它只操作 DataFrame,而不是加载数据操作数据。为此,您将创建一个测试 DataFrame 并检查输出。你可以看看how pandas implements tests获得一些灵感

如果您不关心,那么我们可以利用pd.read_csv 的灵活性,并将_io.StringIO 对象传递给它,它将解析为DataFrame。

import pandas as pd
from io import StringIO

def my_function(file_path):
    df = pd.read_csv(filepath)
    return df 

file_path = StringIO('col1,col2,col3\n1,2,3\n4,5,6')

df = my_function(file_path)
print(df)
#   col1  col2  col3
#0     1     2     3
#1     4     5     6

【讨论】:

  • 谢谢,是的,你是对的。我必须重构我的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-06
  • 2017-02-15
相关资源
最近更新 更多