Макетирование перед импортом модуля

Как выполнить исправление и макет getLogger в этом тестируемом модуле (MUT):

# Start of the module under test
import logging
log = logging.getLogger('some_logger')
# ...

Я бы хотел сделать:

mock_logging.getLogger.return_value = Mock()

Однако я не могу создать mock _ logging перед импортом MUT, но импорт MUT уже вызывает getLogger ...

-121--1696313-

Перенос карты C++ с помощью std:: accumate в PHP Я не очень хорошо разбираюсь в манипуляциях с массивом в PHP, поэтому у меня есть простой вопрос портирования. В C++ у меня есть карта std:: map , для которой неявное упорядочение по ключу является решающим...

Я не очень хорошо разбираюсь в манипулировании массивом в PHP, поэтому у меня есть простой вопрос портирования. В C++ I имеет карту std:: map , для которой неявное упорядочение по ключу является важной частью структуры. Что я хочу сделать, так это суммировать все значения для начального диапазона клавиш, которые я делаю так:

// accumulate helper, since "value_type" is "pair"
int pair_adder(int n, const std::map::value_type & p) { return n + p.second; }

// To add up values for keys up to N:
int total_value_up_to_time_N(int N)
{
  return std::accumulate(mymap.begin(), mymap.upper_bound(N), 0, pair_adder);
}

Что было бы идиоматическим способом записи этой структуры данных и накопителя в PHP?

Объяснить контекст: Структура данных представляет собой простой временной ряд, и я хочу знать, сколько я накопил за время N . Карта C++ всегда сортируется по ключу, поэтому я могу добавить элементы mymap [time] = value; в любом порядке, и карта всегда содержит элементы во временном порядке.

Чтобы объяснить накопление: Функция накопления суммирует все значения карты, ключи которых не больше N . Например, возьмем эту карту:

 mymap = { { 1, 20}, {2, 30}, {3, -10}, {4, 15} };

Тогда для N = 2 я накапливаю 50, для N = 3 я накапливаю 40, и для N = 12 я накапливаю 55.


Обновление: Я только что понял, что на самом деле нет причин, почему каждая временная метка должна встречаться только один раз, поэтому структура данных действительно должна быть std:: multimap . Та же функция накопления работает дословно, но если решение PHP требует времени, чтобы быть ключом массива, то это больше не сработает. Но это не очень важно; Я считаю, что решения, в котором каждый раз требуется быть уникальным, будет достаточно.

5
задан Lightness Races with Monica 3 September 2011 в 15:27
поделиться