在一个类中,我有一个属性(self.data
),它是pandas.DataFrame
我在类中有一个方法save()
,它基本上调用self.data.to_csv()
,并事先进行一些验证。在测试中,我想对其进行修补,这样它就不会在目录中实际存储数据,我只需要确保它作为模拟运行
我不知道如何修补它。到目前为止,我已经:
# Myclass.py
import pandas as pd
class Myclass:
def __init__(self, data):
self.data = pd.DataFrame(data=data)
def save(self, path):
# Do something validation
# I would like to patch the line below.
self.data.to_csv(path)
在test_myclass.py
中:
from unittest import mock
import Myclass
@mock.patch(Myclass.to_csv)
def test_save(myclass_fixture):
myclass_fixture.save(path)
我得到了一个错误:
AttributeError: type object 'Portfolio' has no attribute 'to_csv'
to_csv
是DataFrame
的一个方法,因此您必须修补该方法,因为它已导入到生产代码中:这假设您的项目布局为
myproject/Myclass.py
请注意
patch
的第一个参数不是对象,而是一个字符串,包含修补对象的路径(请参见where to patch了解它应该包含的内容)看起来您还想从一个fixture中获取类-在这种情况下,您必须将该fixture添加到参数中:
相关问题 更多 >
编程相关推荐