- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试测试这个函数,该函数采用一个 Pandas 数据帧行,它用于进行保存到 csv 的 ftp 调用,打开该 csv 文件,对其进行格式化,并将其保存为泡菜。
我想测试以下内容:
def download_file(row):
path_from = row['source']
path_to_raw = LOCAL_RAW.format(row.name)
self.connection = FTP(self.url)
self.connection.login(self.username, self.password)
with open(path_to_raw, 'wb') as f:
self.connection.retrbinary('RETR ' + path_from, f.write)
self.connection.quit()
data = pd.read_csv(path_to_raw)
data.columns = ['a','b','c']
data.to_pickle(LOCAL_PKL.format(row.name))
import pandas as pd
import unittest.mock as mock
from unittest.mock import patch, mock_open, MagicMock, call
import maintain
@patch('builtins.open', create=True)
@patch('maintain.pd.read_csv')
def test_download_path(self, mock_open, mock_pd_read_csv):
mock_pd_read_csv.return_value = pd.DataFrame()
@mock.create_autospec
def mock_pd_to_pickle(self, path):
pass
with patch.object(pd.DataFrame, 'to_pickle', mock_pd_to_pickle):
real = maintain.DataFTP()
real.connection = MagicMock(name='connection')
row = pd.Series(data=['a','b'], index=['c','d'])
row.name = 'anything'
print(mock_open.assert_called_once_with(maintain.LOCAL_RAW.format(row.name), 'wb'))
print(mock_pd_to_pickle.assert_called_once_with(maintain.LOCAL_PKL.format(row.name)))
AssertionError: Expected 'read_csv' to be called once. Called 0 times.
最佳答案
我终于得到了它的工作:
@patch('builtins.open', new_callable=mock_open)
@patch('maintain.pd.read_csv', return_value=pd.DataFrame())
@patch.object(pd.DataFrame, 'to_pickle')
def test_download_path(self, mock_to_pickle, mock_read_csv, mock_open):
real = maintain.EODDataFTP()
real.connection = mock.Mock(name='connection')
row = pd.Series(data=['','nyse'], index=['source','exchange'])
row.name = 'anything'
real.download_file(row)
mock_open.assert_called_once_with(maintain.LOCAL_RAW.format(row.name), 'wb')
mock_read_csv.assert_called_once()
mock_to_pickle.assert_called_once_with(maintain.LOCAL_PKL.format(row.name))
关于python - 如何模拟和测试 python open 和 pandas to_pickle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54896732/
嗨,我有 4 个 pandas 数据框:df1、df2、df3、df4。我喜欢做的是使用 to_pickle 迭代(使用 for 循环)此数据帧的保存。我所做的是这样的: out = 'mypath\
嗨,我有 4 个 pandas 数据框:df1、df2、df3、df4。我喜欢做的是使用 to_pickle 迭代(使用 for 循环)此数据帧的保存。我所做的是这样的: out = 'mypath\
我正在使用 Linux 和 Ipython Notebook。我有一个腌制数据文件目录('/home/jayaramdas/anaconda3/pdf/senate_bills'),其中包含日期、bi
我有一个包含 500,000 行的数据框“DF”。以下是每列的数据类型: ID int64 time datetime64[ns] data object “数据”列中的每个条目
我正在尝试测试这个函数,该函数采用一个 Pandas 数据帧行,它用于进行保存到 csv 的 ftp 调用,打开该 csv 文件,对其进行格式化,并将其保存为泡菜。 我想测试以下内容: builtin
我需要序列化数据帧并通过网络发送它们。出于安全原因,我不能使用 pickle。 下一个最快的方法是什么?我对 v0.13 中的 msgpacks 很感兴趣,但除非我做错了什么,否则性能似乎比 pick
我有一个具有以下结构的 Pandas 数据框 (pd.DataFrame): In [175]: df.dtypes.value_counts() Out[175]: int64 876 f
我是一名优秀的程序员,十分优秀!