Travis CI AttributeError: объект не имеет атрибута ‘assertCountEqual’

#python #unit-testing #code-coverage #travis-ci

#python #модульное тестирование #покрытие кода #travis-ci

Вопрос:

Я столкнулся с проблемой в удаленной среде сборки при использовании assertCountEqual встроенного unittest модуля python.

Эта сборка в Travis-CI выдает эту ошибку во время выполнения coverage run -m unittest discover -v .

Тем не менее, я могу выполнить команду в своей локальной среде — Python 3.8.5 Ubuntu 20.04.

Я попытался удалить атрибут keys dictionary из тестовых данных, но даже тогда сборка завершилась неудачно в удаленной среде и была выполнена в моей локальной среде.

test_bfs.py и test_dfs.py являются файлами, на которых сборка завершается неудачно, и это репозиторий.

Это результат в моей локальной среде:

 test_loop (tests.unit.test_bfs.TestBreadthFirstSearch)
Ensure no vertex points to itself. ... ok
test_number_of_vertices (tests.unit.test_bfs.TestBreadthFirstSearch)
Ensure that number of vertices is greater than 2. ... ok
test_valid_path_exists (tests.unit.test_bfs.TestBreadthFirstSearch)
Ensure a valid path exists for valid data, irrespective of order. ... ok
test_valid_path_not_none (tests.unit.test_bfs.TestBreadthFirstSearch)
Ensure valid path is returned for valid data. ... ok
test_loop (tests.unit.test_dfs.TestDepthFirstSearch)
Ensure no vertex points to itself. ... ok
test_number_of_vertices (tests.unit.test_dfs.TestDepthFirstSearch)
Ensure that number of vertices is greater than 2. ... ok
test_valid_path_exists (tests.unit.test_dfs.TestDepthFirstSearch)
Ensure a valid path exists for valid data, irrespective of order. ... ok
test_valid_path_not_none (tests.unit.test_dfs.TestDepthFirstSearch)
Ensure valid path is returned for valid data. ... ok
test_sequence (tests.unit.test_inorder_traversal.TestInOrderTraversal)
Compare expected output with tree structure. ... ok
test_common_ancestor (tests.unit.test_lowest_common_ancestor.TestLowestCommonAncestor)
Check whether node 2 is the ancestor of node 1. ... ok
test_different_branch_ancestor (tests.unit.test_lowest_common_ancestor.TestLowestCommonAncestor)
Verify ancestor when both nodes belong to different subtrees. ... ok
test_same_branch_ancestor (tests.unit.test_lowest_common_ancestor.TestLowestCommonAncestor)
Verify ancestor when both nodes belong to the same subtree. ... ok
test_sequence (tests.unit.test_postorder_traversal.TestPostOrderTraversal)
Compare expected output with tree structure. ... ok
test_sequence (tests.unit.test_preorder_traversal.TestPreOrderTraversal)
Compare expected output with tree structure. ... ok

----------------------------------------------------------------------
Ran 14 tests in 0.002s

OK
  

Может кто-нибудь, пожалуйста, дайте мне знать, как я могу исправить эту ошибку на Travis?

Ответ №1:

в выводе pip есть подсказка:

 /usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/__init__.py:83: RequestsDependencyWarning: Old version of cryptography ([1, 2, 3]) may cause slowdown.

  warnings.warn(warning, RequestsDependencyWarning)

DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
  

на самом деле работает python2.7, где assertCountEqual не существует

Я бы предложил использовать python -m pip ... для установки вещей — это позволит убедиться, что вы используете версию python, которую вы ожидаете

Комментарии:

1. Но перед выполнением тестовых примеров есть python --version , который выводит Python 3.8.0 . Разве этого недостаточно?

2. python и pip не являются одним и тем же исполняемым файлом, поэтому они могут поступать из разных установок

3. Спасибо, Энтони! Я жду завершения сборки.

4. 🙂 У меня есть каталог с именем queue Queue в нем также есть класс) в корне проекта, который, я думаю, может быть причиной проблемы. Я видел это здесь github.com/eternnoir/pyTelegramBotAPI/issues/298 Я рассмотрю оба аспекта, а затем подтвержду.