我正在尝试用python编写一个脚本(myu脚本)的测试。在这个脚本的中途,熊猫数据帧作为csv保存到AWS。我不想每次运行此测试时都将一个文件保存到AWS,但我确实希望能够在稍后的测试中检查此数据帧的内容。是否可以覆盖我的脚本中的“save \u to \u csv”函数,以便此数据帧持续存在?我尝试编写一个简单的类来将数据帧存储为属性:
class FakeStorage(object):
def __init__(self):
self.dataframe = None
def save_to_csv(self, df, file_path):
self.dataframe = df
print('df fake saved')
FAKE_STORAGE = FakeStorage()
import my_script
my_script.save_to_csv = FAKE_STORAGE.save_to_csv
我还尝试将dataframe持久化为一个全局变量:
def fake_save_to_csv(df, file_path):
global DATAFRAME
DATAFRAME = df
print('df fake saved')
import my_script
my_script.save_to_csv = fake_save_to_csv
奇怪的是,在这两种情况下,我都看到了print语句,因此函数似乎已经被成功覆盖。但是,在测试中运行了我的\u脚本之后,在第一种情况下,我尝试访问FAKE_存储.dataframe在第二种情况下,尝试访问DATAFRAME会抛出一个nameferror。你知道吗
有没有人有别的想法可以试试?你知道吗
我想这样行得通。设置可存储数据帧的全局变量。调用函数时使用副作用保存数据帧。你知道吗
其他可能的解决方案包括在同一个测试函数中测试dataframe,将dataframe保存为类变量而不是全局变量,将dataframe保存为单独类中的设置函数,或者使用pytest创建dataframe fixture。你知道吗
相关问题 更多 >
编程相关推荐