【问题标题】: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