Ошибка в pytest, останавливается на этапе “Collecting”


Тест останавливается на этом моменте. Как я понял, проблема в импорте класса, ибо без него, при проверке теста “assert 1 == 1”, тест проходит сборку и выводит в консоль результат с одним сданным тестом.
P.S. создал функцию в main, попробовал импортировать её и запустить с ней тест, опять все останавливается на этапе “Collecting”

Выглядит как будто оно зависает на анализе файлов проекта, гугл советует добавить в pytest.ini norecoursedirs (c venv и т.п.) https://docs.pytest.org/en/latest/example/pythoncollection.html#changing-directory-recursion
Но странно тогда, что без импорта работает.

Я бы попробовал запустить из терминала без PyCharm.

Ошибку нашел, глупейшую. Если интересно, то в рекурсивной функции я обращался к одной глобальной переменной, которая была объявлена в main, а в тестах, конечно, нет. Вот он и ждал эту переменную. Убрал обращение, сделал локальную переменную в функции и все заработало

def height(r, tree_len, lst_tree):
    h = 1
    for i in range(tree_len):
        if lst_tree[i] == r:      #обращался не к lst_tree, а к другой глобальной переменной
            h = max(h, height(i, tree_len, lst_tree)+1)
    return h


class Tree:
    def __init__(self, lst_tree, tree_len):
        self.lst_tree = lst_tree
        self.tree_len = tree_len
        for i in range(tree_len):
            if lst_tree[i] == -1:
                self.root = i

    def find_height(self):
        h = height(self.root, self.tree_len, self.lst_tree)
        return h
1 лайк