VSCode + Pytest: ошибка: TypeError: невозможно прочитать свойство $ неопределенного значения

Я пытаюсь выполнить 2 очень простых модульных теста, следуя руководству @ https://code.visualstudio.com/docs/python/testing. Однако при попытке запустить модульные тесты я получаю сообщение об ошибке:

Ошибка: TypeError: невозможно прочитать свойство $ неопределенного значения

Я использую Windows 10, Python 3.7.4, использую последнюю версию VSCode.

При первой попытке запустить тесты (с использованием последней версии Pytest) я получил сообщение об ошибке «Ошибка: TypeError: невозможно прочитать свойство ‘$’ of undefined». Это привело меня к: https://github.com/microsoft/vscode-python/issues/6990

Затем я попытался использовать описанную команду pip для понижения версии Pytest до предыдущей версии (5.0.1). Однако команда pip не была распознана, поэтому я решил, что это то, что мне нужно было включить в VSCode перед использованием. Дальнейшие поиски в Google привели меня к выводу, что он должен быть включен по умолчанию при установке любой версии Python> 3.0. Затем я подумал, что ему может понадобиться расширение, поэтому я добавил расширение pip-packages в VSCode. Перезагрузка и повторная попытка — та же ошибка при переходе на более раннюю версию Pytest.

Дальнейшие поиски в Google привели меня к следующему: Как использовать pip с кодом Visual Studio, который указывает на инструкции по настройке системных переменных @ Как добавить в PYTHONPATH в Windows, чтобы он находил мои модули / пакеты?.

Затем я попытался настроить эти переменные, но, похоже, это вызвало дополнительные проблемы, поэтому я отменил эти изменения. Затем я спросил друга, который сказал, что это не должно быть так сложно, и посоветовал мне сначала настроить виртуальную среду.

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

См. также:  Как вернуть файл YAML в качестве выходного артефакта из Lambda в CodePipeline

Я попытался снова выполнить тесты, теперь уже в Venv, и получил ту же ошибку, что и раньше. Это привело меня к следующему: https://github.com/microsoft/vscode-python/issues/6990

Я смог успешно понизить свой Pytest в Venv до 5.0.1, как было предложено в потоке github, затем перезапустил VScode и снова выполнил тест. Та же ошибка.

Мне не удалось найти никакой дополнительной информации — понижение версии Pytest, похоже, сработало для всех остальных.

Код, который я пытаюсь проверить:

inc_dec.py:

def increment(x):
    return x + 1

def decrement(x):
    return x - 1

Тестовые примеры, которые я пытаюсь выполнить:

pytest_test.py:

import inc_dec    # The code to test

def test_increment():
    assert inc_dec.increment(3) == 4

def test_decrement():
    assert inc_dec.decrement(3) == 4

Я ожидал, что первый модульный тест пройдет успешно, а второй — нет. Вместо этого я получаю сообщение об ошибке: Error: TypeError: Cannot read property ‘$’ of undefined

Вы вообще используете виртуальные среды Python? Возможно, вы перешли на pytest 5.0.1 в одной среде, но vscode использует другую.   —  person attard.andrew    schedule 11.09.2019

Я понизил версию pytest до 4.5, поскольку он отлично работал в другом моем проекте, и на самом деле он работает — не думаю, что мне нужно быть суперсовременным с pytest tbh   —  person attard.andrew    schedule 14.09.2019

@Willwsharp — это как бы связано с этим, я собираюсь обновить основную ветку через минуту!   —  person attard.andrew    schedule 16.09.2019

@HendrikF Спасибо за вклад! Скоро обновлю основную ветку.   —  person attard.andrew    schedule 16.09.2019

Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. attard.andrew

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

    В основном — у меня было:

    • Установлен пакет для создания виртуальных сред (pip install virtualenv)
    • Использовал команду virtualenv C: / path / to / venv / folder для создания виртуальной среды
    • В настройках VSCode я поискал «виртуальные среды» и нашел параметр, указывающий мою папку виртуальной среды.
    • На этом этапе — я прочитал, что мне нужно «активировать» виртуальную среду, которую я только что создал. Сначала я попробовал инструкции по активации здесь: https://virtualenv.pypa.io/en/stable/userguide/, но получил ошибку, поэтому я (неправильно) подумал, что могу вместо этого активировать его, выбрав его в качестве интерпретатора в графическом интерфейсе VSCode.
    • Затем я установил Pytest, попытался запустить модульный тест и потерпел неудачу, поэтому я снова понизил его до 5.0.1 и попробовал еще раз, но все равно не удалось. Это момент, когда я пришел к StackOverflow
    • Я решил попробовать еще раз — удалил свой venv, убедился, что Pytest был удален из глобальной среды, повторно добавил venv и т. Д.
    • На этом этапе — при попытке запустить команду активации я решил дополнительно изучить полученное сообщение об ошибке, которое привело меня к следующему: https://superuser.com/questions/106360/how-to-enable-execution-of-powershell-scripts
    • Оказывается, у меня не было достаточных прав для запуска скрипта активации, поэтому мой venv никогда не был « активирован » с самого начала, а команды, которые я запускал для установки и понижения версии Pytest, применялись к глобальной среде, а не к venv
    • Я обновил свои разрешения с помощью удаленной подписи set-executionpolicy (через Windows PowerShell от имени администратора)
    • Затем я снова попытался запустить сценарий активации (с успехом), установил последнюю версию Pytest, чтобы посмотреть, будет ли он работать (у меня такая же ошибка), затем снизился до 5.0.1 и снова запустил тесты.
    • Успех :)
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: