Написание модульного теста для метода в классе, который вызывает статический метод - PullRequest
0 голосов
/ 12 июня 2018

У меня в классе есть следующий статический метод:

@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

1 Ответ

0 голосов
/ 12 июня 2018

статические методы должны вызываться с синтаксисом: self.methodName () или Class.methodName ().вы просто используете methodName, который не будет работать.(Python попытается разрешить его в глобальном пространстве имен)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...