我的班级中有以下静态方法:
@staticmethod
def get_previous_month(date):
previous_month = date - relativedelta.relativedelta(months=1)
return previous_month
在它下面,我在课堂方法中使用它。
def transform_last_price(self, data):
full_data = data. \
addfield('TimeSeriesValue'). \
convert('EffectiveDate', lambda x: date_converter(x))
# Break table to dict_data... Does other stuff...
# Calls static method:
base_month = get_previous_month(dict_data[0]['EffectiveDate'])
# Do more stuff...
# Transform mapped dict into table
lastPriceData = etl. \
fromdicts(dict_data). \
addfield('FundID', self.FUND_ID). \
addfield('TimeSeriesTypeID', 12). \
cutout('MTDReturn')
return lastPriceData
我试图编写一个单元测试,检查是否有一些日期被转换为日期对象。
def test_convert_date_strings_to_date_objects(self):
data = etl.fromdicts([{'EffectiveDate': '1990-08-31'}])
transformed_dates = self.parser.transform_last_price(data)
date = transformed_dates.values('EffectiveDate')[0]
self.assertIsInstance(date, datetime.date)
但是,我收到以下错误:
NameError: name 'get_previous_month' is not defined
我假设测试无法访问静态方法?我不知道怎么重写这个。我已经单独为get_previous_month
编写了一个测试并且它正在运行,但我正在为transform_last_price
答案 0 :(得分:1)
静态方法:self.methodName()或Class.methodName()。你只需使用不起作用的methodName。 (Python会尝试针对全局命名空间解决它)