Тест останавливается на этом моменте. Как я понял, проблема в импорте класса, ибо без него, при проверке теста “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 лайк