Django патч сохранить в unittest

Изменен Pattern.split () , чтобы включить сопоставленный шаблон в список

Добавлено

// add match to the list
        matchList.add(input.subSequence(start, end).toString());

Полный источник

public static String[] inclusiveSplit(String input, String re, int limit) {
    int index = 0;
    boolean matchLimited = limit > 0;
    ArrayList matchList = new ArrayList();

    Pattern pattern = Pattern.compile(re);
    Matcher m = pattern.matcher(input);

    // Add segments before each match found
    while (m.find()) {
        int end = m.end();
        if (!matchLimited || matchList.size() < limit - 1) {
            int start = m.start();
            String match = input.subSequence(index, start).toString();
            matchList.add(match);
            // add match to the list
            matchList.add(input.subSequence(start, end).toString());
            index = end;
        } else if (matchList.size() == limit - 1) { // last one
            String match = input.subSequence(index, input.length())
                    .toString();
            matchList.add(match);
            index = end;
        }
    }

    // If no match was found, return this
    if (index == 0)
        return new String[] { input.toString() };

    // Add remaining segment
    if (!matchLimited || matchList.size() < limit)
        matchList.add(input.subSequence(index, input.length()).toString());

    // Construct result
    int resultSize = matchList.size();
    if (limit == 0)
        while (resultSize > 0 && matchList.get(resultSize - 1).equals(""))
            resultSize--;
    String[] result = new String[resultSize];
    return matchList.subList(0, resultSize).toArray(result);
}

0
задан Janp95 18 January 2019 в 13:16
поделиться

1 ответ

Вы пытаетесь смоделировать модуль Players, а не класс Players. Попробуйте это:

@patch.object(myproject.entities.Players.Players, 'add_player', fake_add_player)

Некоторые несвязанные, незапрошенные советы:

  • , очевидно, у вас есть файл с именем Players.py, содержащий класс Player. Я ожидаю, что этот класс будет жить в модуле entities (myproject/entities.py вместо myproject/entities/Players.py).
  • ваш fake_add_players сломан. Должно быть:

    def fake_add_player(self, player):
        self.players.append(player)
    

    После патча Игроки, self относится к Players, а не PlayersTest. Вы можете удалить функцию из класса, чтобы избежать этой путаницы.

  • Я не совсем уверен, чего вы пытаетесь достичь, но у меня есть догадка, что ваш класс Players также может быть пользовательским менеджером .
0
ответ дан Daniel Hepper 18 January 2019 в 13:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: