Начавшийся пару дней назад мой обычный процесс отладки кода Python через pytest просто перестал работать.
Мой предыдущий процесс был следующим:
import debugpy
debugpy.listen(5678)
debugpy.wait_for_client()
Вставьте вызов debugpy.breakpoint() над строкой, чтобы остановиться, ИЛИ используйте красную кнопку желоба, чтобы отметить точку останова (менее надежно).
Нажмите клавишу F5, когда pytest запустится, и в терминале появится сообщение collecting....
Этот процесс работал целых два месяца с тех пор, как я перешел с PyCharm. По состоянию на пару дней назад новое поведение выглядит следующим образом:
debugpy.breakpoint()
для остановки выполнения, код остановится, однако, в, казалось бы, случайном месте. Прежде чем я переустановил почти все (VSCode, создал новую виртуальную машину Linux), он останавливался на случайной строке внутри файла из библиотеки pytest. После того, как я все переустановил, теперь он останавливает случайную строку внутри нашего кода разрыва тестовой базы данных.Вещи, которые я уже пробовал:
"env": {"PYTEST_ADDOPTS": "--no-cov"}
к моему launch.json
. (Линтер предупреждает, что это свойство здесь не разрешено и опция не добавляется во время выполнения).justMyCode
.Опять же, я хотел бы подчеркнуть, что это работало раньше и что я не вносил никаких изменений в конфигурацию, чтобы вызвать это.
Больше информации:
Version: 1.74.2 (Universal)
Commit: e8a3071ea4344d9d48ef8a4df2c097372b0c5161
Date: 2022-12-20T10:26:09.430Z (3 wks ago)
Electron: 19.1.8
Chromium: 102.0.5005.167
Node.js: 16.14.2
V8: 10.2.154.15-electron.0
OS: Darwin x64 21.6.0
Sandboxed: No
Запуск.json
"version": "0.2.0",
"configurations": [
{
"name": "Python: Remote Attach",
"type": "python",
"request": "attach",
"connect": {
"host": "localhost",
"port": 5678
},
"pathMappings": [
{
"localRoot": "/mnt/the_repo_folder",
"remoteRoot": "/mnt/the_repo_folder"
}
],
"justMyCode": true
}
]
}
Согласно комментарию @JialeDu, понижение версии debugpy, похоже, решило проблему. Оказывается, внезапные проблемы совпадают с выпуском версии этого пакета до 1.6.5. Таким образом, переход на 1.6.4 с двухмесячной давности решил эту проблему. Я буду сообщать об этом как об ошибке на github библиотеки.
ОБНОВЛЕНИЕ — 24 января 2023 г.: Поведение было изменено с тех пор, как я понизил версию пакета, поэтому похоже, что это либо вообще не исправление, либо мне просто ненадолго повезло. После дополнительных возни я обнаружил, что более постоянное исправление — отключить захват в pytest, запустив тест с флагами: -s и --no-cov. Только в некоторых модулях я должен это делать, что все равно странно.
Привет smallpants, рад узнать, что вы нашли решение этой проблемы! Пожалуйста, подумайте над тем, чтобы ответить на него и принять его как ответ, чтобы изменить его статус на «Отвечено». Это также поможет другим решить аналогичную проблему. Просто напоминание :)
Попробуйте понизить версию debugpy и других зависимостей или отладить код в локальной среде разработки, чтобы проверить, возникает ли проблема. Проверьте наличие изменений в файле конфигурации. Проверка официальной документации vscode поможет.